0
我有一組名爲Organization和OrganizationController的域和控制器類。Grails中的模擬域類
的OrganizationController只有一個方法:
def index() {
def organizations = Organization.list()
[orgs: organizations]
}
我試着通過2種方式來模擬出域類。
第一種方式是使用@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。
你說的對! – monksy 2014-12-02 08:37:31