In Grails ho un servizio che voglio testare. Il servizio utilizza queste importazioni:Grails/Groovy - utilizzando più @TestMixin
import grails.converters.JSON
import grails.web.JSONBuilder
voglio il servizio per fare ottenere i dati e convertirlo in JSON:
def tables = DataProfileStats.withCriteria {
projections {
distinct("tableName")
}
};
Il metodo di supporto che ho scritto per costruire il JSON è:
public String buildNodeString(String nodeText)
{
def builder = new JSONBuilder();
JSON result = builder.build {
hello = "world"
};
return result.toString();
}
Nel test dell'unità devo aggiungere @TestMixin (ControllerUnitTestMixin) in modo che l'adattatore JSON sia caricato. Ma devo anche aggiungere @TestMixin (DomainClassUnitTestMixin) in modo da poter prendere in giro l'oggetto del database.
Qualche idea su come avere più @TestMixin o si tratta di un problema di progettazione con me che ha un'importazione grails.web.JSONBuilder in una classe di servizio? Altrimenti, devo usare una libreria JAVA/JSON o mettere la roba JSON in un controller.
Questo è quello che voglio il test per assomigliare:
@TestMixin(ControllerUnitTestMixin)
@TestMixin(DomainClassUnitTestMixin)
class JsTreeJSONGeneratorServiceTests {
void testSomething() {
DataProfileStats stats1 = new DataProfileStats();
stats1.tableName = "table";
mockDomain(DataProfileStats, stats1);
JsTreeJSONGeneratorService service = new JsTreeJSONGeneratorService();
String json = service.buildNodeString();
assert json != "";
}
}
ottengo un @TestMixin (ControllerUnitTestMixin) @TestMixin (DomainClassUnitTestMixin) JsTreeJSONGeneratorServiceTests class {
void testSomething() {
DataProfileStats stats1 = new DataProfileStats();
stats1.tableName = "table";
mockDomain(DataProfileStats, stats1);
JsTreeJSONGeneratorService service = new JsTreeJSONGeneratorService();
String json = service.buildNodeString();
assert json != "";
}
}
ottengo un @TestMixin (ControllerUnitTestMixin) @TestMixin (DomainClassUnitTestMixin) JsTreeJSONGeneratorServiceTests class {
void testSomething() {
DataProfileStats stats1 = new DataProfileStats();
stats1.tableName = "table";
mockDomain(DataProfileStats, stats1);
JsTreeJSONGeneratorService service = new JsTreeJSONGeneratorService();
String json = service.buildNodeString();
assert json != "";
}
}
ottengo "Impossibile specificare l'annotazione duplicato sullo stesso membro: grails.test.mixin. TestMixin "eccezione.
Grazie
Congratulazioni per la soluzione. Quando sei in grado, assicurati di contrassegnare la tua risposta come "accettata" in modo che altri possano apprendere dal tuo successo. Saluti ~ –
Grazie - questo mi ha aiutato (stavo usando @Mock() però). – duma