【问题标题】:Understanding unit Testing in Grails了解 Grails 中的单元测试
【发布时间】:2012-06-30 06:57:49
【问题描述】:

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

所以。在测试控制器中,第二行是 @Mock(Author)

这是什么意思..当我模拟一个域类时我得到了什么好处?

【问题讨论】:

    标签: grails groovy grails-2.0


    【解决方案1】:

    正如extensive documentation on testing 中所说:

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

    AuthorControllerTests 也是 AuthorController 的测试,而不是 Author 域类。

    【讨论】:

    • 所以你的意思是说在Author域中编写的方法不能用这个AuthorControllerTests类进行测试?我需要为作者域类创建单独的 testClass 吗?
    • 您可以这样做,但是您可能有另一个使用 Author 的控制器,您是否也要在那里测试域?如果您将 and test your domain object with a domain test 和您的 controller with a controller test 分开,您将避免重复自己,并获得更容易找到的代码
    【解决方案2】:

    只是为了添加一些东西,当您需要隔离代码的“单元”时,模拟很有用,例如您的控制器。

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

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

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

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2011-09-24
      • 1970-01-01
      • 1970-01-01
      • 2012-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多