我有一个具有User
对象的安全模型。此User
对象与2个不同的对象(Roles
对象和Permissions
对象具有1对多的关系 - 请注意不同的Role
和不同的{{1可以引用相同的Permission
。我正在编写一个测试(不必然是一个单元测试)来测试User
和Roles
集合的功能及其方法,但我不确定如何创建将成为上述对象一部分的Permissions
对象。
我应该创建一些mockito' d User
个对象,还是在User
下创建一个真实的对象?有更好的方法吗?请注意,我是mockito的新手!
答案 0 :(得分:2)
看起来User
,Roles
和Permissions
都是data or value objects:它们实际上没有要测试的交互,但只是为了保存结构化数据而存在。这使得使用真实对象而不是煞费苦心地模仿模拟非常引人注目:为什么在when(mockUser.getUserName()).thenReturn("bob")
工作得更好或更好时写User user = new User("bob")
?当你有setter时尤其如此:Mockito不太适合让getFoo()在setFoo(X)之后立即返回X.
如果是这样,创建所有这三个对象的真实实例应该是安全且容易的,并且为测试手动关联它们。您可以提取一个测试助手,创建并关联用户/角色/权限的可预测图表。
如果您的模型对象包含archive
,delete
,sendEmail
等方法,则互动变得更加重要,您可以考虑使用fake或selectively-stubbed partial mock。但是,此时,您的模型对象可能会附加到存储库或服务对象,这可能更适合替换您的测试。