我有一个简单的Grails控制器:
class AuthorController {
def index(){
def authors = Author.findByFirstName("Albert")
render (view: "author-page", model: ["authors":authors])
}
}
这里,Author是一个领域类,它映射到SQL数据库中的一张表。
我正在尝试编写一个单元测试,如下所示:
import grails.test.mixin.Mock
@Mock(Author)
class AuthorControllerSpec extends Specification {
void "when index is called, authorPage view is rendered"() {
when:
controller.index()
then:
view == "/author-page"
}
但是当我运行这个测试时,我一直收到java.lang.IllegalStateException错误:在Grails应用程序之外使用了类[com.mypackage.Author]上的方法。如果在使用模拟API或正确引导Grails的测试上下文中运行,请解决此问题。
有人能告诉我如何正确地测试我的操作吗?我无法模拟Author.findByFirstName()方法。
我正在使用Grails 2.4.2
谢谢。