Grails 只需要在集成测试中模拟一个服务方法
我正在编写grails集成测试,它调用一个控制器,该控制器调用一个服务,该服务调用另一个服务,该服务调用另一个服务Grails 只需要在集成测试中模拟一个服务方法,grails,groovy,mocking,integration-testing,Grails,Groovy,Mocking,Integration Testing,我正在编写grails集成测试,它调用一个控制器,该控制器调用一个服务,该服务调用另一个服务,该服务调用另一个服务 Controller -> ServiceA.method1() -> ServiceB.method2() -> ServiceC.method3() 要调用的最后一个服务中的最后一个方法(ServiceC.method3())调用外部世界(另一个JVM)并返回一个结果,我想模拟该结果以进行集成测试。因此,我仍在测试该特定服务方法之间的链 我在读grails
Controller -> ServiceA.method1() -> ServiceB.method2() -> ServiceC.method3()
要调用的最后一个服务中的最后一个方法(ServiceC.method3()
)调用外部世界(另一个JVM)并返回一个结果,我想模拟该结果以进行集成测试。因此,我仍在测试该特定服务方法之间的链
我在读grails中的模拟,但似乎只有在单元测试中才可能
有什么建议可以帮助你完成这个任务吗
我在读《圣杯》中的嘲弄,但它似乎只是一本书
在单元测试中是可能的
那肯定不是真的。
您可以在单元测试和集成测试中使用Groovy中提供的所有模拟方法
通过使用贴图强制进行模拟,可以很容易做到:
controller.serviceA.serviceB.serviceC = [method3: {return 'MockValue'}] as ServiceC
我在读《圣杯》中的嘲弄,但它似乎只是一本书
在单元测试中是可能的
那肯定不是真的。
您可以在单元测试和集成测试中使用Groovy中提供的所有模拟方法
通过使用贴图强制进行模拟,可以很容易做到:
controller.serviceA.serviceB.serviceC = [method3: {return 'MockValue'}] as ServiceC
使用元类重写方法的功能。在我的集成测试中,我一直这样做,这是我模仿的方式 因此,在您的测试方法中,可以这样做(注意,方法arg类型必须与实际方法完全匹配): 确保在集成测试分解方法中重置此服务的元类,否则所有其他int测试将具有相同的定义:
controller.serviceA.serviceB.serviceC.metaClass = null
使用元类重写方法的功能。在我的集成测试中,我一直这样做,这是我模仿的方式 因此,在您的测试方法中,可以这样做(注意,方法arg类型必须与实际方法完全匹配): 确保在集成测试分解方法中重置此服务的元类,否则所有其他int测试将具有相同的定义:
controller.serviceA.serviceB.serviceC.metaClass = null
小贴士:1。bean在集成测试中自动连接。2. <代码>元类可用于添加/模拟行为。提示:1。bean在集成测试中自动连接。2. <代码>元类可用于添加/模拟行为。