在Grails中我有一個服務,我想單元測試。該服務使用這些進口:Grails/Groovy - 使用多個@TestMixin
import grails.converters.JSON
import grails.web.JSONBuilder
我想要的服務做獲取數據,並將其轉換成JSON:
def tables = DataProfileStats.withCriteria {
projections {
distinct("tableName")
}
};
的輔助方法,我寫信給構建JSON是:
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 != "";
}
}
我得到一個@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 != "";
}
}
我得到一個「不能指定同一部件上重複標註:grails.test.mixin。 TestMixin「異常。
謝謝
祝賀解決方案。如果可以,請確保將您的答案標記爲「已接受」,以便其他人可以向您學習成功。乾杯〜 –
謝謝 - 這幫了我(我正在使用@Mock()雖然)。 – duma