Tôi đang cố gắng thực hiện một số việc mô phỏng đơn giản một lớp Domain trong một bài kiểm tra đơn vị cho một dịch vụ Grails theo tài liệu, nhưng nó dường như không hoạt động, trong các truy vấn đó trả về null. Tôi thiếu một cái gì đó đơn giản? Dưới đây là phần có liên quan của mã của tôi, tôi thay đổi tên lớp và phương pháp kiểm tra cho rõ ràng:MockDomain gọi cung cấp dữ liệu miền lịch thi đấu không hoạt động, tôi đang thiếu gì? Grails 2.0.1
@TestFor(MyService)
@TestMixin(DomainClassUnitTestMixin)
class MyServiceTests {
void testMyThing() {
defineBeans {anotherService(AnotherService)} //My service under test uses another service, unlikely relevant?
MyUser.metaClass.isDirty = { //workaround for mockDomain not adding isDirty method.
println("dirty check called");
}
mockDomain(MyUser, [
[username: "[email protected]", accountType: UserType.STANDARD, id: 1L],
[username: "[email protected]", accountType: UserType.STANDARD, id:3L],
[username: "[email protected]", accountType: UserType.BUSINESS, id:2L]
])
MyUser user1 = MyUser.get(1);
System.out.println("user 1: ${user1}"); // output is 'user 1: null'
MyUser user1byName = MyUser.findByUsername("[email protected]");
System.out.println("user 1 by name: ${user1byName}"); // output is 'user 1 by name: null'
... the actual testing stuff which would love to have non null MyUser objects ...
}
}
Bạn đã thử thêm @Mock (MyUser) chưa? –
@tomas Có, tôi đã làm, không có hiệu lực. Với các tài liệu, nó không cần thiết khi sử dụng mockDomain() – Peter