原文地址:
https://docs.acquia.com/article/lesson-101-unit-and-functional-testing
Drupal 8 中的测试主要分为两种类型:单元测试和功能测试。测试被用于多种途径,有些测试在开发开始之前书写,帮助开发者构建所需要的功能,另一些测试帮助进行回归测试。本课目的是介绍这两种类型的测试,但不解释何时写这些测试。
单元测试和功能测试的主要区别是测试的范围,单元测试旨在测试少量的功能。Drupal 8 中,自定义服务比较适合使用单元测试,这是因为服务被设计为与使用这个服务的功能解耦,这些服务不依赖于正在运行的 Drupal 站点或者现场运行的配置和数据。
功能测试是测试整合了很多组件的功能。例如,我们可能希望在系统中执行一个变更,然后确保另一个系统响应这种变化。要完成这个你需要一个实际的 Drupal 站点。你可以做更大范围的功能测试,但它们通常较慢。
本课...
- 书写单元测试
- 执行单元测试
- 书写功能测试
- 执行功能测试
初期安装
我们创建个新模块 test_example。
test_example.info.yml
name: Test Example type: module description: Example showing how to create tests core: 8.x package: Examples dependencies: - user - options
创建一个简单服务
服务(Services)是能够进行测试的好例子。
test_example.services.yml
services: test_example.conversions: class: Drupal\pants\TestExampleConversions
src/TestExampleConversions.php 文件:
<?php /** * @file * Contains \Drupal\test_example\TestExampleConversions. */ namespace Drupal\test_example; /** * Provide functions for converting measurements. * * @package Drupal\test_example */ class TestExampleConversions { /** * Convert Celsius to Fahrenheit * * @param $temp * * @return int */ public function celsiusToFahrenheit($temp) { return ($temp * (9/5)) + 32; } /** * Convert centimeter to inches. * * @param $length * * @return int */ public function centimeterToInch($length) { return $length / 2.54; } }