对于集成测试,我想有一个.save()
故意为了测试根据else
-condition。如何在集成测试中使域对象的.save()方法失败?
我的测试类做这样的:
从UserService.groovy:
User user = User.findByXyz(xyz)
if (user) {
// foo
if (user.save()) {
// bar
} else {
// I WANT TO GET HERE
}
}
我试过至今未能实现途径:
什么我已经试过在UserServiceTests.groovy中:
def uControl = mockFor(User)
uControl.demand.save { flush -> null } // in order to test a failing user.save()
def enabledUser = userService.enableUser(u.confirmationToken)
uControl.verify()
// or the following:
User.metaClass.'static'.save = { flush -> null } // fails *all* other tests too
如何正确地从集成测试中找到else块?
更改的用户元类应该工作,你只需要首先调用registerMetaClass这样的元级被测试完成后恢复,不要忘记调用super.tearDown()如果你已经在你的类中实现它。 – 2011-09-05 02:10:48