【发布时间】:2014-12-02 07:01:31
【问题描述】:
我有一组域和控制器类,分别称为:Organization 和 OrganizationController。
OrganizationController 只有一种方法:
def index() {
def organizations = Organization.list()
[orgs: organizations]
}
我尝试通过 2 种方式模拟 Domain 类。
第一种方法是使用@Mock注解,创建对象并保存:
void "test index"() {
given:
new Organization(name: 'JIMJIM').save()
new Organization(name: 'ABC').save()
def expected = [org: [new Organization(name: 'JIMJIM'),
new Organization(name: 'ABC')]]
when:
def actual = controller.index()
then:
actual == expected
}
这导致 Oraganization.list 返回一个空列表。实际回报 [org: []]
我也尝试过使用 mockDomain:
void "test index"() {
given:
mockDomain(Organization, [new Organization(name: 'JIMJIM'),
new Organization(name: 'ABC')
])
def expected = [org: [new Organization(name: 'JIMJIM'),
new Organization(name: 'ABC')]]
when:
def actual = controller.index()
then:
actual == expected
}
但是我仍然得到相同的结果。为什么我的域类没有被嘲笑?
我的测试装饰(OrganizationControllerSpec)如下:
@TestFor(OrganizationController)
@Mock(Organization)
@TestMixin(DomainClassUnitTestMixin)
class OrganizationControllerSpec extends Specification {
我正在使用 Grails 2.3.8。
【问题讨论】:
标签: unit-testing grails mocking grails-orm