2013-12-12 36 views
3

工作,我有简单的问题待办事项GORM挂钩方法Grails的集成测试

待办事项格姆期间集成测试钩法(更新前负荷等)的工作?他们是否被评估?

我有集成测试(我的测试类扩展的GroovyTestCase)和我所看到的变化,我让我的域对象上后负荷方法似乎不工作(域对象保持不变负荷后)当我手动测试它(运行我的应用程序)它的工作原理(域对象成功更改)。在集成测试期间,我也看不到任何日志或打印到钩子方法的控制台。

这是预期的行为还是我错过了什么?

这里是一些代码: 我有PackageState域对象,它具有字段accountID(Integer)。 在PackageState我后负荷钩:

def afterLoad() { 
     this.accountID = 33333 
    } 

我的测试套件看起来是这样的:

void "test3"() { 
     PackageState packageState1 = PackageState.findByAccountID(11111) 
     assertEquals(33333, packageState1.accountID) 
    } 

消息是: junit.framework.AssertionFailedError:预期:< 33333>但:< 11111>

所以在我看来,挂钩不叫:/ ...

感谢, 伊万

回答

3

您可以集成测试这些事件挂钩由周围的动态方法(或任何其他格姆法)由withNewSession为:

class PackageStateSpec extends IntegrationSpec { 
    PackageState packageState1 

    void "test something"() { 
     given: 
      PackageState.withNewSession{ 
       packageState1 = PackageState.findByAccountID(11111) 
      } 

     expect: 
      packageState1.accountID == 33333 
    } 
} 

活动将与新的会话注册每次从集成测试中进行测试时。