Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 帮助解决Grails测试域方法失败的问题?_Java_Unit Testing_Grails_Groovy - Fatal编程技术网

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-谢谢,我的模型中缺少约束。把这个转换成答案,我会接受的。