单元测试 - 使用实际值还是模拟?

时间:2012-12-09 01:14:22

标签: unit-testing junit nunit phpunit

我有一个单元测试,断言特定模型是否具有属性,以及该属性是否为空。

所以,如下所示:

public function testHasMySpecialProperty()
{
    $this->assertTrue($this->model->getMySpecialProperty());
}

我的问题是模型应该是什么。对象的模拟或真实的不稳定。

这种情况下的对象是系统的用户。因此,为了正确加载,我需要用户ID等。但如果我只是伪造它,那么测试感觉无用

3 个答案:

答案 0 :(得分:2)

使用mock并不是真的在测试模型。只需传递真实物体并检查物业即可。毕竟,这就是你正在测试的。

答案 1 :(得分:1)

你不使用模拟来测试模拟。你使用模拟来切断你要测试的部分真正的系统。检查mock是否有属性正在测试模拟。它让您无法进一步了解您的真实系统。

答案 2 :(得分:1)

这取决于。当该对象不是测试的主题时,使用模拟来删除具有外部依赖性的复杂对象或对象的行为。

因此,如果您正在测试model的行为,请使用真实的东西。如果model是一个数据对象,没有行为并且没有附加到外部资源(例如,不进行数据库调用),那么使用真实的东西。如果model有一些额外的行为或依赖关系,并且是测试的目标,请继续并模拟它。

相关问题