2012-06-30 86 views
2

我是Grails初学者。并试图了解单元测试.. 当我创建一个域类Author grails自动为该域创建一个测试控制器AuthorControllerTests了解单元在Grails中测试

等等。在测试控制器中,第二行是@Mock(作者)

这是什么意思..当我嘲笑一个域类时,我得到的优势是什么?

回答

1

,因为它说,在extensive documentation on testing

素注释创建的任何合作者的模拟版本。有一个GORM的内存中实现将模拟与GORM API的大多数交互。对于那些不会自动模拟的交互,您可以使用内置的支持来以编程方式定义模拟和存根。

另外AuthorControllerTests是作者控制器,而不是作者域类的测试。

+0

还是你的意思是说写在作者域中的方法不能与此AuthorControllerTests类进行测试?我需要为作者域类创建单独的testClass? – monda

+1

你可以这样做,但你可能有另一个使用Author的控制器,你是否也要在那里测试域?如果您将它分开[并使用域测试测试您的域对象](http://grails.org/doc/latest/guide/testing.html#unitTestingDomains)和您的[带有控制器测试的控制器](http:/ /grails.org/doc/latest/guide/testing.html#unitTestingControllers),你将避免重复自己,并获得更容易找到的代码 –

1

只需添加一些东西,当你需要隔离代码的“单元”时,嘲笑就很有用,就像在这里你的控制器一样。

通过隔离,我们的意思是编写简单的组件来重新模拟和模拟所有的依赖关系。这个简单的组件就是我们所说的Mocks。

Grails在这里给你提供了模拟域类的可能性,它将使你的测试变得更容易,因为它不会将信息存储在数据库中。

如果你想测试整个堆栈,从控制器到数据库,这就是我们所说的集成测试。

希望它有助于