Java 帮助解决Grails测试域方法失败的问题?
鉴于这项服务:Java 帮助解决Grails测试域方法失败的问题?,java,unit-testing,grails,groovy,Java,Unit Testing,Grails,Groovy,鉴于这项服务: class AchievementsService { static transactional = true public void onEvent(String eventName, User user) { def event = Event.findByName(eventName) if (!event) { event = new Event(name: eventName, autoConf
class AchievementsService {
static transactional = true
public void onEvent(String eventName, User user) {
def event = Event.findByName(eventName)
if (!event) {
event = new Event(name: eventName, autoConfigured: true)
event.save()
}
}
}
为什么该测试失败:
class AchievementsServiceTests extends GrailsUnitTestCase {
AchievementsService service
User user
protected void setUp() {
super.setUp()
service = new AchievementsService()
user = new User(username:"marty",password: "password")
mockDomain(User,[user])
}
void testThat_given_eventDoesNotExistWhenCallingOnEvent_that_eventIsCreated()
{
mockDomain Event
service.onEvent "MyEvent", user
assert Event.count() == 1
}
}
失败原因如下:
Assertion failed:
assert Event.count() == 1
| |
0 false
我必须在设置中或调用我的
.save()
方法时缺少一个步骤,但我看不到它。如果验证失败,请将此代码添加到服务中以打印验证错误:
if (!event.save()) {
event.errors.each{println it}
}
您是否在事件上收到任何验证错误?将此项添加到您的服务以进行测试:
如果(!event.save()){event.errors.each{println it}}
将其作为集成测试运行是否有效?在将其转换为集成后,您可能需要删除对mockDomain
的调用test@David-谢谢,我的模型中缺少约束。把这个转换成答案,我会接受的。