我有一个单元测试,它断言特定模型是否具有属性以及该属性是否不为空。
因此,类似于以下内容:
public function testHasMySpecialProperty()
{
$this->assertTrue($this->model->getMySpecialProperty());
}
我的问题是模型应该是什么。模拟或对象的真实实例。
在这种情况下,对象是系统的用户。因此,为了正确加载,我需要用户 ID 等。但如果我只是伪造它,那么测试感觉毫无用处
我有一个单元测试,它断言特定模型是否具有属性以及该属性是否不为空。
因此,类似于以下内容:
public function testHasMySpecialProperty()
{
$this->assertTrue($this->model->getMySpecialProperty());
}
我的问题是模型应该是什么。模拟或对象的真实实例。
在这种情况下,对象是系统的用户。因此,为了正确加载,我需要用户 ID 等。但如果我只是伪造它,那么测试感觉毫无用处
使用 amock
并不是真正测试模型。只需传递真实对象并检查属性即可。毕竟,这就是您要测试的内容。
您不使用模拟来测试模拟。您使用模拟来切断您要测试的真实系统的一部分。检查模拟是否具有属性正在测试模拟。它不会让您进一步了解您的真实系统。
这取决于。当复杂对象或具有外部依赖关系的对象不是测试的主题时,使用模拟来排除复杂对象的行为。
因此,如果您正在测试 的行为model
,请使用真实的东西。如果model
是一个数据对象,没有行为并且没有附加到外部资源(例如,不进行数据库调用),那么使用真实的东西。如果model
有一些额外的行为或依赖项,并且它不是测试的目标,请继续模拟它。