1

私はGrailsの初心者です..ユニットテストケースを書くことを学んでいます

私は2つのドメインを持っています

class Employee {

    String name
    String department

    static hasOne =[address: Address]   


    public String toString() {
        name
    }
}

class Address {

    String line1
    String line2

    Employee employee

    static constraints = {
    }
}

ここに私のAddressControllerTest.groovyがあります

 void testSave() {

        def address = new Address(line1: "Kaser Road", line2: "Bridage Town")
        .addToEmployee(new Employee(name: "monda", department:"IT")).save()

        controller.save()

        assert model.addressInstance != null
}

エラーレポートを提供します

No signature of method: trip.side.Address.addToEmployee() is applicable for argument types: (trip.side.Employee) values: [monda] Possible solutions: setEmployee(trip.side.Employee), getEmployee()
groovy.lang.MissingMethodException: No signature of method: trip.side.Address.addToEmployee() is applicable for argument types: (trip.side.Employee) values: [monda]
Possible solutions: setEmployee(trip.side.Employee), getEmployee()
    at trip.side.AddressControllerTests.testSave(AddressControllerTests.groovy:41)

誰かが私にそれを行う正しい方法を提案できますか。

4

2 に答える 2

2

どのドメイン クラスをモックするかを Grails に伝える必要があるため、次を使用します。

mockDomain( Employee )
mockDomain( Address )

これは Grails 1.x に関連しており、バージョン 2.x では注釈が使用されています。

@Mock( [ Employee, Address ] )
于 2012-06-26T08:39:23.437 に答える
1

トムが言ったようにまだモックを行う必要がありますが、addTo*間違って使用しています-それはまさにエラーメッセージがあなたに伝えていることです. addTo*1 対 1 の関係ではなく、1 対多および多対多の関係に使用されます。ドメインを設定した方法で、次のようにします。

def employee = new Employee(name: "monda", department:"IT", address: new Address(line1: "Kaser Road", line2: "Bridage Town")).save()
于 2012-06-26T22:29:56.493 に答える