Trong Grails Tôi có một dịch vụ mà tôi muốn thử nghiệm đơn vị. Dịch vụ này sử dụng các hàng nhập khẩu:Grails/Groovy - sử dụng nhiều @TestMixin
import grails.converters.JSON
import grails.web.JSONBuilder
Tôi muốn các dịch vụ làm có được dữ liệu và chuyển nó sang JSON:
def tables = DataProfileStats.withCriteria {
projections {
distinct("tableName")
}
};
Phương pháp helper tôi đã viết để xây dựng JSON là:
public String buildNodeString(String nodeText)
{
def builder = new JSONBuilder();
JSON result = builder.build {
hello = "world"
};
return result.toString();
}
Trong thử nghiệm đơn vị tôi phải thêm @TestMixin (ControllerUnitTestMixin) để bộ điều hợp JSON được nạp. Nhưng tôi cũng phải thêm @TestMixin (DomainClassUnitTestMixin) để tôi có thể giả lập đối tượng cơ sở dữ liệu.
Bất kỳ ý tưởng nào về cách có nhiều @TestMixin hoặc đây có phải là vấn đề thiết kế với tôi khi nhập grails.web.JSONBuilder trong lớp dịch vụ không? Nếu không, tôi phải sử dụng một thư viện JAVA/JSON hoặc đặt các công cụ JSON trong một bộ điều khiển.
Đây là những gì tôi muốn thử nghiệm để trông giống như:
@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 != "";
}
}
tôi nhận được một @TestMixin (ControllerUnitTestMixin) @TestMixin (DomainClassUnitTestMixin) JsTreeJSONGeneratorServiceTests lớp {
void testSomething() {
DataProfileStats stats1 = new DataProfileStats();
stats1.tableName = "table";
mockDomain(DataProfileStats, stats1);
JsTreeJSONGeneratorService service = new JsTreeJSONGeneratorService();
String json = service.buildNodeString();
assert json != "";
}
}
tôi nhận được một @TestMixin (ControllerUnitTestMixin) @TestMixin (DomainClassUnitTestMixin) JsTreeJSONGeneratorServiceTests lớp {
void testSomething() {
DataProfileStats stats1 = new DataProfileStats();
stats1.tableName = "table";
mockDomain(DataProfileStats, stats1);
JsTreeJSONGeneratorService service = new JsTreeJSONGeneratorService();
String json = service.buildNodeString();
assert json != "";
}
}
tôi nhận được một "Không thể chỉ định chú thích trùng lặp trên các thành viên cùng: grails.test.mixin. TestMixin "ngoại lệ.
Cảm ơn
Chúc mừng giải pháp. Khi bạn có thể, hãy đảm bảo đánh dấu câu trả lời của bạn là 'được chấp nhận' để những người khác có thể học hỏi từ bạn thành công. Chúc mừng ~ –
Cảm ơn bạn - điều này đã giúp tôi (tôi đã sử dụng @Mock()). – duma