2014-12-02 19 views
0

도메인 및 컨트롤러 클래스 집합이 각각 Organization 및 OrganizationController라고합니다. 나는 두 가지 방법으로 도메인 클래스를 조롱하려고했습니다Grails에서 도메인 클래스 조롱

def index() { 
    def organizations = Organization.list() 
    [orgs: organizations] 
} 

:

OrganizationController은 하나의 방법이있다.

첫 번째 방법은 @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 빈 목록을 반환시키는 원인이 된. 실제 반환 [조직 : []]

나는 또한 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 
} 

. 내 도메인 클래스가 조롱을받지 않는 이유는 무엇입니까? 내가 Grails를 2.3.8을 사용하고

@TestFor(OrganizationController) 
@Mock(Organization) 
@TestMixin(DomainClassUnitTestMixin) 
class OrganizationControllerSpec extends Specification { 

:

내 시험 장식 (OrganizationControllerSpec)는 다음과 같다.

답변

1

첫 번째 조각은 Organization 객체가 실제로 만들어진, ... 모든

먼저 확인 것 같다,하지만? 필수 입력란이 모두 제공됩니까? 확인하려면 save(failOnError: true)을 사용해보세요.

또한 컨트롤러에는 orgs이 있고 테스트에는 org을 사용합니다. 그것은 단지 오자입니까?

equals 메서드를 Organization 클래스로 덮어 쓰지 않는 한 데이터베이스의 개체가 new 연산자로 만든 개체와 같지 않습니다.

+0

맞아요. – monksy

관련 문제