[英]How to mock the GrailsApplication for unit test in a @component object
我有一个组件
@Component
class SomeComponent {
@Autowired
GrailsApplication grailsApplication
String buildString(String someInfo) {
return "${grailsApplication.config.my.string}${someInfo}"
}
}
和单元测试
@TestMixin(ControllerUnitTestMixin)
class SomeComponent Tests {
@Test
void test() {
SomeComponent component = new SomeComponent()
component.grailsApplication = new Expando()
component.grailsApplication.config = [config: [my: [string: 'FOO']]]
assert component.buildString('BAR') == 'FOOBAR'
}
}
当我执行测试时,出现以下错误:
org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object '{}' with class 'groovy.util.Expando' to class 'org.codehaus.groovy.grails.commons.GrailsApplication'
那么最好的方法是什么?
这里是我如何不使用def来解决它:
SomeComponent component = new SomeComponent(grailsApplication: grailsApplication)
component.grailsApplication.config.my.string = 'FOO'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.