2016-05-12 16 views
0

Wenn ich Tests mit dem Build-Test-Data Plugin in Grails 3 durchführe, sehe ich den folgenden Fehler.Grails 3 upgrade Testprobleme

groovy.lang.MissingMethodException: No signature of method: com...Item.save() is applicable for argument types:() values: [] Possible solutions: last(), wait(), any(), saveAll([Ljava.lang.Object;), saveAll(java.lang.Iterable), last(java.lang.String) 

Dies ist in der Regel um ein .save() oder .build() Ich bin keinen Test-Guru so weiß jemand, was ist oben?

aktualisieren

Das Beispiel sieht wie folgt aus ...

import grails.buildtestdata.mixin.Build 

@Build(Author) 
class AuthorUnitTests { 

    void testAuthorStuff() { 
     def author = Author.build() 
     ... 
    } 

} 

My-Code wie folgt aussieht ...

@TestFor(Item) 
@Build([Item]) 
class ItemSpec extends Specification 
{ 
    ... 
    def "Blah Blah"() { 
     given: 
      Item i = Item.build(id: 1) 
    } 
} 
+0

Wenn es sich um einen Komponententest handelt, sollte '@Build (Item)' auf Klassenebene verwendet werden, wie in der Dokumentation des Plugins gezeigt. – dmahapatro

+0

Ich bin ein bisschen verwirrt Kannst du auf den Teil zeigen, auf den du dich beziehst? Ich sehe Anhang – Jackie

+0

Mit dem obigen Update ist es klar, dass Sie '@ Build' verwenden. Es sollte funktionieren. Müssen Sie die ID auch manuell zuweisen? – dmahapatro

Antwort

0

Below Unit-Test in Grails 3.1.1 passiert:

package com.example 

import grails.test.mixin.TestFor 
import spock.lang.Specification 
import grails.buildtestdata.mixin.Build 

@TestFor(Item) 
@Build(Item) 
class ItemSpec extends Specification { 

    void "test something"() { 
     expect: 
     Item.build(name: 'Test').name == 'Test' 
    } 
} 

build.gradle

compile 'org.grails.plugins:build-test-data:3.0.0' 

Vergewissern Sie sich die App einmal das Plugin GAV hinzugefügt build.gradle bauen/kompilieren:

gradlew build 

tun sollten.

+0

Ich verwende Grails 3.0.11, aber ich kann überprüfen – Jackie