Drupal 8 模块开发 10.1 : 单体和功能测试

原文地址:https://docs.acquia.com/articles/drupal-8-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;
  }
 
}

 

You may also like

Leave a Reply

Your email address will not be published. Required fields are marked *