В Grails у меня есть сервис, который я хочу пройти модульное тестирование.Служба использует следующие операции импорта:
import grails.converters.JSON
import grails.web.JSONBuilder
Я хочу, чтобы служба получала данные и преобразовывала их в JSON:
def tables = DataProfileStats.withCriteria {
projections {
distinct("tableName")
}
};
Вспомогательный метод, который я написал для построения JSON:1007 *
public String buildNodeString(String nodeText)
{
def builder = new JSONBuilder();
JSON result = builder.build {
hello = "world"
};
return result.toString();
}
В модульном тесте я должен добавить @TestMixin (ControllerUnitTestMixin), чтобы загрузить адаптер JSON.Но я также должен добавить @TestMixin (DomainClassUnitTestMixin), чтобы я мог издеваться над объектом базы данных.
Любые идеи о том, как использовать несколько @TestMixin, или это проблема дизайна, когда у меня есть импорт grails.web.JSONBuilderв классе обслуживания?В противном случае мне придется использовать библиотеку JAVA / JSON или поместить JSON-содержимое в контроллер.
Вот как я хочу, чтобы тест выглядел следующим образом:
@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 != "";
}
}
Я получаю класс @TestMixin (ControllerUnitTestMixin) @TestMixin (DomainClassUnitTestMixin) JsTreeJSONGeneratorServiceTests {
void testSomething() {
DataProfileStats stats1 = new DataProfileStats();
stats1.tableName = "table";
mockDomain(DataProfileStats, stats1);
JsTreeJSONGeneratorService service = new JsTreeJSONGeneratorService();
String json = service.buildNodeString();
assert json != "";
}
}
Я получаю класс @TestMixTinTixTinSiteTixTinSiteTecitSit (@TestMixinTextMixTinSigner){
void testSomething() {
DataProfileStats stats1 = new DataProfileStats();
stats1.tableName = "table";
mockDomain(DataProfileStats, stats1);
JsTreeJSONGeneratorService service = new JsTreeJSONGeneratorService();
String json = service.buildNodeString();
assert json != "";
}
}
Я получаю исключение «Невозможно указать дубликат аннотации для одного и того же члена: grails.test.mixin.TestMixin».
Спасибо