Sco*_*ott 9 grails unit-testing mixins
在Grails中,我有一项服务,我想进行单元测试.该服务使用这些导入:
import grails.converters.JSON
import grails.web.JSONBuilder
Run Code Online (Sandbox Code Playgroud)
我希望服务获取数据并将其转换为JSON:
def tables = DataProfileStats.withCriteria {
projections {
distinct("tableName")
}
};
Run Code Online (Sandbox Code Playgroud)
我编写的用于构建JSON的辅助方法是:
public String buildNodeString(String nodeText)
{
def builder = new JSONBuilder();
JSON result = builder.build {
hello = "world"
};
return result.toString();
}
Run Code Online (Sandbox Code Playgroud)
在单元测试中,我必须添加@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 != "";
}
Run Code Online (Sandbox Code Playgroud)
}
我得到了@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 != "";
}
Run Code Online (Sandbox Code Playgroud)
}
我得到了@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 != "";
}
Run Code Online (Sandbox Code Playgroud)
}
我得到一个"不能在同一个成员上指定重复注释:grails.test.mixin.TestMixin"异常.
谢谢
Sco*_*ott 20
找到了!
@TestMixin([GrailsUnitTestMixin, ControllerUnitTestMixin, DomainClassUnitTestMixin])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3187 次 |
| 最近记录: |