Angesichts der folgenden Domain-Klasse ObjektMap Konstruktor nicht String zuweisen in Grails
class Dog {
Object name // changing the type to String fixes it
}
Und diese Einheit Test:
import grails.test.mixin.Mock
import grails.test.mixin.TestMixin
import grails.test.mixin.support.GrailsUnitTestMixin
import spock.lang.*
/**
* See the API for {@link grails.test.mixin.support.GrailsUnitTestMixin} for usage instructions
*/
@TestMixin(GrailsUnitTestMixin)
@Mock([Dog])
class DogSpec extends Specification {
def setup() {
}
def cleanup() {
}
void "test something"() {
Dog dog = new Dog(name:"sparky")
// dog.name = "sparky" // adding this line also fixes it
expect:"fix me"
dog.name == "sparky"
}
}
Lauf grails test-app
nicht, aber wenn Sie die Art der Dog.name
ändern zu String
, es funktioniert gut. Debugging bringt mir zu erkennen, dass Dog.name
nie zugewiesen wird und ist null
. Wenn ich dog.name
über reguläre Zuweisung nach dem Erstellen wie oben festgelegt wurde, wird der Test bestanden.
Dieses Problem tritt nicht in Groovy Script auf, das dieselbe Kartenkonstruktorzuweisung verwendet.
Ich möchte, dass mein Typ Object
ist, da es je nach Anwendungsfall variiert.
Eine Idee, warum das passiert? Ist es ein Fehler in Grails?
sieht aus wie GORM können die Serializer für die 'Object' Daten nicht gefunden tippt und schlägt lautlos – injecteer
Siehe [this] (https://github.com/grails/grails-core/issues/10692) Fehlerbericht auf GitHub. –