我已经使用TDD几个月了,现在我想学习如何测试我的控制器(MVC).
通过测试每个功能的最小单元来进行单元测试.有时,控制器不小.他们从模型中获取数据并传递给视图.
我应该如何对控制器进行单元测试?我应该模拟控制器的依赖吗?
控制器测试是否考虑集成测试?
谢谢.
model-view-controller tdd integration-testing controller mocking
是否可以从对象文字中递归调用一个方法?
例如:
(function () {
'use strict';
var abc = ['A', 'B', 'C'],
obj = {
f: function () {
if (abc.length) {
abc.shift();
f(); // Recursive call
}
}
};
obj.f();
}());
Run Code Online (Sandbox Code Playgroud)
错误:在定义之前使用'f'.
谢谢.
我试图用PHPUnit和vfsStream测试move_uploaded_file和is_uploaded_file.他们总是回归虚假.
public function testShouldUploadAZipFileAndMoveIt()
{
$_FILES = array('fieldName' => array(
'name' => 'file.zip',
'type' => 'application/zip',
'tmp_name' => 'vfs://root/file.zip',
'error' => 0,
'size' => 0,
));
vfsStream::setup();
$vfsStreamFile = vfsStream::newFile('file.zip');
vfsStreamWrapper::getRoot()
->addChild($vfsStreamFile);
$vfsStreamDirectory = vfsStream::newDirectory('/destination');
vfsStreamWrapper::getRoot()
->addChild($vfsStreamDirectory);
$fileUpload = new File_Upload();
$fileUpload->upload(
vfsStream::url('root/file.zip'),
vfsStream::url('root/destination/file.zip')
);
$this->assertFileExists(vfsStream::url('root/destination/file.zip'));
}
Run Code Online (Sandbox Code Playgroud)
可能吗?我怎么做?我可以使用PHP代码发布没有表单的vfsStreamFile(或任何数据)吗?谢谢.
tdd ×2
controller ×1
file ×1
javascript ×1
mocking ×1
php ×1
phpunit ×1
recursion ×1
unit-testing ×1