gpt4 book ai didi

java - 创建将成为另一个模拟对象的一部分的模拟对象的最佳实践

转载 作者:行者123 更新时间:2023-11-28 21:11:10 25 4
gpt4 key购买 nike

我有一个安全模型,它有一个 User 对象。此 User 对象与 2 个不同的对象具有一对多关系,一个是 Roles 对象,一个是 Permissions 对象 - 需要注意的是不同的 Role 和不同的 Permission 可以引用相同的 User。我正在编写一个测试(不一定 一定是单元测试)来测试围绕 RolesPermissions 及其方法的集合的功能,但是我不确定如何创建 User 对象,该对象将成为上述对象的一部分。

我应该创建一些 mockito 的 User 对象还是在 @Before 下创建一个真实的对象?有更好的方法吗?请注意,我是 mockito 的新手!

最佳答案

看起来UserRolesPermissions 都是data or value objects :他们并没有真正的交互来测试,而只是为了保存结构化数据而存在。这使得使用真实对象而不是煞费苦心地 stub 模拟变得非常有吸引力:为什么要写 when(mockUser.getUserName()).thenReturn("bob") when User user = new User( "bob") 效果一样好还是更好?当您有 setter 时尤其如此:Mockito 不太适合让 getFoo() 在 setFoo(X) 之后立即返回 X。

如果是这样,创建所有这三个对象的真实实例并为您的测试手动关联它们应该是安全且容易的。您或许可以提取一个测试助手来创建和关联用户/角色/权限的可预测图。

如果您的模型对象具有archivedeletesendEmail 等方法,则交互变得更加重要,您可能考虑一个 fakeselectively-stubbed partial mock .不过,到那时,您的模型对象可能会附加到存储库或服务对象,这可能更适合在您的测试中替换。

关于java - 创建将成为另一个模拟对象的一部分的模拟对象的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27383684/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com