gpt4 book ai didi

unit-testing - 如何在集成测试中为动态脚手架Grails Controller 模拟服务?

转载 作者:行者123 更新时间:2023-12-02 14:34:52 25 4
gpt4 key购买 nike

我正在尝试在针对动态脚手架 Controller 的集成测试中模拟服务。我收到一条错误消息,指示无法通过测试访问服务的 Controller 属性。

似乎动态脚手架 Controller 根本无法通过单元测试进行测试,因此我正在使用集成测试。我想模拟服务以测试应用程序中的错误处理。这是Grails 2.2.0中的错误,还是我做错了?
grails test-app的结果是:

groovy.lang.MissingPropertyException: No such property: myService for class: MyController

例:

我已经修改了 src/templates/scaffolding/Controller.groovy:
class ${className}Controller {
MyService myService

def action() {
render myService.serviceMethod()
}
}

动态脚手架 MyController.groovy:
class MyController {
static scaffold = MyDomainClass
}

集成测试 MyControllerTests.groovy:
class MyControllerTests extends GroovyTestCase {
def myController

@Before
void setUp() {
myController = new MyController()
}

void testMock() {
myController.myService = [ serviceMethod : { return "foo" } ] as MyService
controller.action()
}
}

最佳答案

尝试使用setter方法:

void testMock() {
myController.setMyService([ serviceMethod : { return "foo" } ])
controller.action()
}

如果执行: println c.metaClass.methods*.name,您将看到像getSetMyService()和getGetMyService()这样的方法。我不确定,但是Grails可能不是在添加字段,而是为字段get / set方法获取方法。

关于unit-testing - 如何在集成测试中为动态脚手架Grails Controller 模拟服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14798255/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com