我在应用程序中将一些代码从模型移动到了Lib,因为它可以从2个模型中使用,而不是与数据库相关。它是一个上传处理程序,可以从我的两个模型中使用。它位于/app/Lib/UploadHandler.php 这样可行。乌拉...
但是:我怎样才能为我的Lib写单元测试?它是一个lib而不是第三方类,它们属于vendor文件夹。我在一个新文件夹“Lib”中创建了一个TestClass /app/Test/Case/Lib/UploadHandlerTest.php
到目前为止,我所做的是:
App::uses('UploadHandler', 'Lib');
/**
* UploadHandler Test Case
*
*/
class UploadHandlerTestCase extends CakeTestCase
{
/**
* Fixtures
*
* @var array
*/
public $fixtures = array();
/**
* setUp method
*
* @return void
*/
public function setUp() {
parent::setUp();
$this->UploadHandler = ClassRegistry::init('UploadHandler');
}
/**
* tearDown method
*
* @return void
*/
public function tearDown() {
unset($this->UploadHandler);
parent::tearDown();
}
public function testHandleFileUpload() {....
这给我的错误如下: MissingTableException 在数据源测试中找不到模型UploadHandler的表sang_upload_handlers。 测试用例:UploadHandlerTestCase(testHandleFileUpload)
但是 - 嘿,我不需要数据库!我的所有方法都只运行我提供公共方法的数据。
我的测试类的正确初始化是什么?
感谢您的帮助!
Calamity Jane
答案 0 :(得分:0)
所以如果除了我之外的任何人都对它感兴趣,我找到了一种方法让它像我想要的那样工作。
首先是文件夹结构:
班级位置:
app / Lib / MyLib.php
测试类位置:
应用/测试/外壳/ LIB / MyLibTest.php
通过这个,你可以在CakePHP浏览器web界面中看到你的库的测试。
第二:如何防止有关dabase表的错误。 答案很简单:只是让你的testclass扩展而不是CakeTestCase,但是使用原始的PHPUnit_Framework_TestCase,你就可以毫不费力地丢失表格。
...咄
示例:
require_once DS.'var'.DS.'www'.DS.'myproject'.DS.APP_DIR.DS.'/Lib/UploadHandler.php';
/**
* UploadHandler Test Case
*
*/
class UploadHandlerTestCase extends PHPUnit_Framework_TestCase
{....
我很乐意帮助自己;)我想在今年的变化中有很多睡眠可以解决问题;)
Calamity Jane