Ich habe gerade angefangen, an Spock testing framework für Java-Anwendungen zu arbeiten. Ich habe keine Erfahrung mit Groovy. Wie injizieren wir Spock in den Konstruktor? Unten ist mein Code und Testbeispiel.Wie injizieren Mock-Objekt in den Konstruktor?
public class ResourceClass {
private final IDynamoDBMapper factory = new DefaultDynamoDBClientFactory(DynamoDBConfig.fromProperties()).mapperClient();
private ServiceClass service;
@Inject
public ResourceClass(ServiceClass service) {
this.service = service;
}
}
Und ich habe versucht, Testklasse wie unten zu erstellen.
class ResourceClassTest extends Specification {
ResourceClass eventsResource
ServiceClass service
def setup() {
service = Mock(ServiceClass)
eventsResource = new ResourceClass(service)
}
Aber ich bin immer unter Ausnahme bei eventsResource = new Resource (Service)
java.lang.NullPointerException: Domain name must be specified.
at java.util.Objects.requireNonNull(Objects.java:228)
Anregungen bitte?
Sie Gergely danken. Ich änderte den Quellcode, um DynamoDBMapper in die Ressourcenklasse zu injizieren. Dies geschieht nur bei Verwendung von Spock oder mit Mockito auch? – vamsi
Dies geschieht beim Ausführen der Spock-Tests, aber es ist kein Spock-Problem, aber der Klassenpfad unterscheidet sich normalerweise beim Ausführen der Anwendung und beim Ausführen der Tests. Wenn Sie die dynamo db-Konfigurationsdatei beim Ausführen der App im Klassenpfad haben, aber nicht beim Ausführen der Tests –