Mik*_*uto 5 java grails junit unit-testing
我正在为我的grails应用程序编写单元测试,并且我意识到我并不知道确定对象是否是正确对象的正确方法.
例如,鉴于此测试:
void testExampleTest() {
mockSession.person = new Person(firstName:'John', lastName:'Doe', middleInitial:'E')
def model = controller.testMethod()
...assertions...
}
Run Code Online (Sandbox Code Playgroud)
和
def testMethod = {
Person currPerson = session.getAttribute("person")
render(view:'view',model:[person:currPerson]
}
Run Code Online (Sandbox Code Playgroud)
我应该如何确保我添加到会话中的人物对象在模型中正确传递?是否足够使用
assertEquals( person,model['person'] )
Run Code Online (Sandbox Code Playgroud)
或者因为我自己将对象注入会话中使用它更有意义
assertEquals( person.firstName, model['person'].firstName )
assertEquals( person.lastName, model['person'].lastName )
assertequals( person.middleName, model['person'].middleName )
Run Code Online (Sandbox Code Playgroud)
在我看来,只要对象具有正确定义的equals方法,第一种方法就足够了,但我只是想看看传统的方法是什么.
谢谢
逐个属性的比较需要在每个测试中重复 - 所以这是一个很好的旧代码重复,XUnitPatterns 中描述的测试味道。最好有一个合适的equals()。
当然,您可以添加实用方法personEquals(),甚至可以Person.equals()在运行时重写。对于模拟类,您可能必须这样做。assertEquals()我个人坚持使用较短的代码,尽可能只使用一个。
| 归档时间: |
|
| 查看次数: |
6161 次 |
| 最近记录: |