关闭

phpunit 单元测试案例--签到任务

发表于:2013-12-23 11:35

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:shayang88    来源:51Testing软件测试网采编

  单元测试中会有一些调用方法,这里我不列出具体代码,只解释方法的作用:
<?php
/**
* 签到任务单元测试
*
* @author    shayang88
* @since     2013-11-27
* @copyright Copyright (c) 2005-2012 Inc.
* @desc
*
*/
require_once dirname(__FILE__) . '/../../webroot/bootstrap.php';
class test_sign_task extends PHPUnit_Framework_TestCase
{
public $testUid = 5888882; //这个是测试的用户id
/**
* 这个函数主要用来清除用户在2个表中的任务状态,重置为下面做准备
*/
public function testClear(){
//清除现有表签到任务,主要是任务的状态归零
$taskModel = new GuaziTaskModel();
$taskModel->clearTask($this->testUid, 'sign');
//清除签到表,清除用户的连续签到天和最后签到时间
$signModel = new GuaziSignModel();
$signModel->getCollection()->update(array('uid' => $this->testUid ), array('$unset' => array ('last_time' => 1, 'sign_time' => 1)));
}
/**
* 这个函数用来断言上一步清除任务状态是否完成
*/
public function testEmpty(){
//断言是否任务状态已清空
$objSignTask = Task_Factory::factory('sign');
$signStatus = $objSignTask->getStatus($this->testUid);
//清除完成,则任务状态归零,所以用0来断言
$this->assertEquals(0, $signStatus);
//断言是否任务已清空
$signModel = new GuaziSignModel();
$arrsign = $signModel->getSignByUid($this->testUid);
//这里因为清空是直接清除了字段,所以用NULL来断言
$this->assertNull($arrsign['n_t']);
$this->assertNull($arrsign['t']);
}
/**
* 这个函数是签到数据的供给器,主要是为了模拟签到连续的天数,为下面的testSign提供数据,这里
* 需要了解数据供给器的用法@dataProvider
* @return array
*/
public function dataProducer() {
//提供签到数据
//第1个参数是签到时间,第2个是连续签到的天数,第3个是任务的完成状态
return array(
array('2013-11-25 19:30', 1, 1),
array('2013-11-26 18:30', 2, 2),
array('2013-11-27 10:30', 3, 3),
array('2013-11-28 23:59', 4, 4),
array('2013-11-29 22:59', 5, 4),
);
}
/**
* @dataProvider dataProducer
*/
public function testSign($nowTime,$signCount,$taskStatus)
{
//循环接收dataProducer给的值开始执行任务,3个参数就是上面数组的个数
$now = strtotime($nowTime);
$signModel = new GuaziSignModel();
//更新任务表状态并断言
$objSignTask = Task_Factory::factory('sign');
//更新任务状态,当然内部会区分每一步不同的操作
$doTaskRes = $objSignTask->doTaskForPhpunit($this->testUid, $now);
//断言执行结果
$this->assertEquals(1, $doTaskRes);
//获取任务状态
$signStatus = $objSignTask->getStatus($this->testUid);
//断言任务状态
$this->assertEquals($taskStatus, $signStatus);
//更新签到表并断言
$ret = $signModel->updateLastSign($this->testUid,$now);
//断言连续签到天数
$this->assertCount($signCount, $ret['t']);
}
}
22/2<12
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号