前言:

Yii2是一款非常优秀的php框架,Yii2的官方发行版整合了Codeception测试框架。在使用Yii2框架的项目中,我们可以非常方便地利用Codeception进行单元测试、功能测试和验收测试。现在我们就利用Codeception在Yii2下实现简单的单元测试。

在进行单元测试前,需要做一些准备工作。

1. 首先确保你的机器安装了Composer,否则请自行安装,这是安装教程

2. 打开命令行,并切换目录到项目根目录,分别运行如下命令。

Cmmand代码

composer require "fxp/composer-asset-plugin:*"  composer require "codeception/codeception=*"  composer require "codeception/specify=*"  composer require "codeception/verify=*"

3.首先创建测试文件,在tests目录下面运行如下命令

..\vendor\bin\codecept generate:test unit \models\ExampleValidation

结果如下

ExampleValidationTest.php源码如下

<?php
namespace tests\codeception\unit\models;  use Yii;
use app\models\DepartmentModel;
use yii\codeception\TestCase;  class ExampleTest extends TestCase
{  use \Codeception\Specify;  private $_dept;  /** * @var \UnitTester */  protected $tester;  protected function _before()  {  $this->_dept = new DepartmentModel();  }  protected function _after()  {  }  public function testValidation()  {  $this->specify('Department validation fail', function() {  /* 给dept_name赋一个重复的值,然后assertFalse */  $this->_dept->dept_name = 'Biology';  $this->assertFalse($this->_dept->validate());  });  $this->specify('Department validation pass', function() {  /* 给dept_name赋一个尚未重复的值,然后assertTrue */  $this->_dept->dept_name = 'Math';  $this->assertTrue($this->_dept->validate());  });  }  }

<?phpnamespace common\tests\unit\models;class CollectionTest extends \Codeception\Test\Unit
{protected $tester;protected function _before(){}protected function _after(){}public function testCollection1(){$this->assertTrue(2 == 2);}public function testCollection2(){$this->assertTrue(1 > 2);}}

然后在命令行测试结果如下

指定到类

D:\Project\PHP\yii2\common>..\vendor\bin\codecept run unit \models\CollectionTest

指定到方法

D:\Project\PHP\yii2\common>..\vendor\bin\codecept run unit \models\CollectionTest:testCollection1

显示有一个错误

注,_bootstrap.php 文件记得引入Yii的自动加载

<?php
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'test');
defined('YII_APP_BASE_PATH') or define('YII_APP_BASE_PATH', __DIR__ . '/../../');require_once(__DIR__ . '/../../vendor/autoload.php');
require_once(__DIR__ . '/../../vendor/yiisoft/yii2/Yii.php');
require(__DIR__ . '/../config/bootstrap.php');

参考:

Yii2框架下,使用Codeception进行单元测试:http://tangl163.iteye.com/blog/2288538

Yii2中如何使用CodeCeption:http://hustnaive.github.io/php/2015/06/16/work-with-yii-and-codeception.html

codeception (3)在yii2下创建Unit Tests (单元测试):https://segmentfault.com/a/1190000005926883

https://www.cnblogs.com/zergling9999/p/6052766.html

Yii2中如何使用CodeCeption相关推荐

  1. YII2中分页组件的使用

    当数据过多,无法一页显示时,我们经常会用到分页组件,YII2中已经帮我们封装好了分页组件. 首先我们创建操作数据表的AR模型: <?phpnamespace app\models;use yii ...

  2. 解决在Yii2中使用PHPExcel出现Class ‘app\controllers\PHPExcel‘ not found的问题

    解决在Yii2中使用PHPExcel出现Class 'app\controllers\PHPExcel' not found的问题 参考文章: (1)解决在Yii2中使用PHPExcel出现Class ...

  3. 在yii2中,让你action参数支持POST数据的小方法

    2019独角兽企业重金招聘Python工程师标准>>> 我们先来看一段代码 class RaController extends Controller {public $enable ...

  4. Yii2中如何将Jquery放在head中的方法

    2019独角兽企业重金招聘Python工程师标准>>> 今天在写一个扩展,扩展中要求,扩展中可以任意地方输出jquery代码,那么jquery就必须在head中首先加载. 大家都知道 ...

  5. yii2 引入php文件,Yii2中YiiBase自动加载类、引用文件方法分析(autoload)

    本文实例分析了Yii2中YiiBase自动加载类.引用文件的方法.分享给大家供大家参考,具体如下: 在Yii2中这个函数是用来加载类的,没有直接引用文件的相关实现.但是这个也可以用来引用文件. pub ...

  6. Yii2 中cookie的用法(2)

    设置Cookie PHPsetcookie("name", "Larry", time()+3600); Yii2$cookies = Yii::$app-&g ...

  7. js生成的cookie在yii2中获取不到的解决办法

    在js中创建的cookie,默认用yii2中自带的方法Yii::$app->request->cookies->get('abc')获取不到,而用$_COOKIE['abc']又是能 ...

  8. yii2 html form,YII2中ajax通过post提交form表单数据报400错误的解决方法

    摘要:YII2中通过ajax post表单数据需要验证CSRF否则post数据是无法提交过去的.虽然有其他人提供过解决方案,但都不够完整,除了把enableCsrfValidation设为false外 ...

  9. yii2 asset.php,Yii2中使用asset压缩js,css文件的方法_php实例

    官网文档 http://www.yiiframework.com/doc-2.0/guide-structure-assets.html yii目录下运行 asset/template assets. ...

最新文章

  1. knn计算机在图片中的应用,图像分类和kNN
  2. HDU 3032 Nim or not Nim?
  3. Javascript s08
  4. 自定义对话框 提示:Unable to add window token null is not for an application
  5. 四大触点,教你从“用户视角”构建数据分析体系
  6. 【Java】OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes…… 的解决方法
  7. 下划线间隔数字 排序_面试必备:经典算法动画解析之希尔排序
  8. 刷新mac地址命令_常用网络检测命令-必备技术
  9. Servlet面试题
  10. 看Panasonic EZ0l21充电器有感
  11. 深度学习,mxnet库的安装
  12. (js队列,堆栈) (FIFO,LIFO)
  13. linux定时压缩脚本,使用shell脚本对日志文件进行定时压缩
  14. Hadoop-1-大数据概述
  15. mysql创建用户只能访问数据库中一张表
  16. 虚拟人,你们着实有点抢镜了(doge)
  17. [转] Carmack 谈 d3d 与 ogl, 定位专业应用的OpenGL, 专注娱乐应用的DirectX, 未来:OpenGL、DirectX并行发展...
  18. 二、简单线性回归模型(计量经济学学习笔记)
  19. 什么才是软件定义汽车?
  20. 图像分类模型 GoogLeNet

热门文章

  1. Q6:QIA一站式测试
  2. 计算机内存容量影响游戏的吗,内存容量对整机游戏性能影响有多大?
  3. Python爬虫入门教程15:音乐网站数据的爬取
  4. 不知道如何录音转文字?分享两个实用方法
  5. ModuleNotFoundError: No module named ‘myitem.myapp‘
  6. wifi快速漫游实例分析
  7. [Java]Spring Ioc讲解,不怕你不懂
  8. CSV是什么文件格式【转】
  9. Rinne Loves Dynamic Graph
  10. 连玉君链接-Stata连享会