2 回答
TA贡献1852条经验 获得超7个赞
在这种情况下,您正在让您的User
班级负责加载角色。通常,这不是您User
班级的责任。相反,您可以例如setRole(Role $role)
在您的User
类上定义一个函数,该函数接受一个 realRole
或 fake/stub/mock/whatever Role
,而不是用户 ID。然后在实际使用用户对象的函数/代码中完成角色的检索。
但是那么如何测试那个类呢?
在单元测试中,通常更容易不依赖像你的静态方法Role::load
。相反,您可以使用非静态方法。然后,您可以编写一个扩展类,Role
它会在测试期间执行您希望它执行的操作。然后你也可以写一些东西来检查你告诉它做的事情是否已经完成。
这就是为什么通常不鼓励使用许多静态方法的原因:因为很难测试(使用)它们。
TA贡献1936条经验 获得超6个赞
您的User课程除了加载角色之外什么都不做。所以问题是你会在这门课上团结什么?
单元测试的目的是检查一种方法是否正常工作。这意味着如果对于已定义的输入,它会返回预期结果,或者如果输入无效则抛出错误。
Role如果您进行单元测试,存根或模拟类是完全可以的。想象一下你在User类中有下一个方法(伪代码我在 PHP 中不太好)
public function getUserRights() : String[]
{
String[] array = new String[5];
if ($this->role.equals('ADMIN'){
.... some logic here ...
}
return array;
}
如果现在你存根你的角色并且在不同的测试中你从存根(模拟)对象返回不同的角色,你可以检查你的方法 getUserRights()是否基于不同的角色正常工作。
而且也可以从 web 服务加载角色,但在这种情况下,我会称之为集成测试,在这种情况下,你想检查你的 web 服务是否正常工作,并且设置这些类型的测试并不像它那样容易单元测试。
- 2 回答
- 0 关注
- 122 浏览
添加回答
举报