java - 帮助解决失败的 Grails 测试 - 域方法不起作用?

标签 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, 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} 
}

关于java - 帮助解决失败的 Grails 测试 - 域方法不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5913515/

相关文章:

java - 在不关闭连接的情况下根据请求将数据从服务器推送到客户端?

java - 如何查找路径是否已用作符号链接(symbolic link)的源

c# - 我怎样才能模拟这个异步方法?

angularjs - 使用Angular js和Grails上传文件

java - 有没有一种通用的方法可以在 Android 的 View 上显示进度条?

python - Luigi 参数默认值和模拟

c# - 如何在单元测试中实现 EF 的 FIND 方法?

grails - grails 中的 boolean 值不会被持久化?

java - 如何在 Groovy 的 JSON 转换器方法中保持字母大小写?

java - Grails + WS 客户端抛出 CXF 异常