我是初学者。并试图了解单元测试..
当我创建域类Author
时,grails会自动为该域创建一个测试控制器AuthorControllerTests
。
所以。在测试控制器中,第二行是@Mock(作者)
这意味着什么..我在模拟域类时获得的优势是什么?
答案 0 :(得分:1)
在extensive documentation on testing中说:
模拟注释创建任何协作者的模拟版本。存在GORM的内存实现,它将模拟与GORM API的大多数交互。对于那些未自动模拟的交互,您可以使用内置支持以编程方式定义模拟和存根。
AuthorControllerTests也是AuthorController的测试,而不是Author域类。
答案 1 :(得分:1)
只是为了添加一些东西,当您需要隔离像控制器这样的代码“单元”时,模拟很有用。
通过隔离,我们的意思是编写简单的组件来重新替换和模拟所有依赖项。这个简单的组件就是我们所说的Mocks。
Grails在这里为您提供了模拟域类的可能性,这将使您的测试更容易,因为它不会将信息存储在数据库中。
如果要测试整个堆栈,从控制器到数据库,这就是我们所说的集成测试。
希望有所帮助