Tôi có một hạng A trong đó có những điều sau đây:Moq nhập khẩu MEF?
public class A {
[Import(typeof(IMyService)]
public IMyService MyService { get; set; }
public A() {
CompositionInitializer.SatisfyImports(this);
}
public void DoWork() {
//Blah
MyService.DoIt();
//Blah
}
}
Và một thử nghiệm để kiểm tra này (riêng biệt DLL - rõ ràng)
[TestMethod]
public void TestDoWork() {
//Blah
DoWork();
//Assert assert
}
này không như cố gắng gọi 'MyService' mang lại cho tôi vô . Tôi đã cố gắng sau đó:
[ClassInitialize]
public void InitialiseClass() {
var myService = new Mock<IMyService>();
MyService = myService.Object;
}
với 'MyService' khai báo là:
[Export(typeof(IMyService))]
public IMyService MyService { get; set; }
Nhưng vẫn không có niềm vui, tôi thiếu một cái gì đó - là điều này thậm chí có thể?
Tôi đang sử dụng SL3, MEF Preview 9 và MOQ.
Bất kỳ trợ giúp nào được đánh giá cao!
Cheers
Chris
OK, nhưng tại sao tôi cần phải sử dụng nhà nhập khẩu hàm xây dựng, thuộc tính đang hoạt động tốt trong triển khai thực tế của tôi, có lẽ có một tuyến đường để có thể giả lập các loại nhập đó? –
@Chris: mặc dù MEF khuyến khích tiêm tài sản, tôi thích tiêm xây dựng vì cách đó trình biên dịch ngăn bạn tạo đối tượng bị thiếu phụ thuộc. Nó cũng cho phép bạn làm cho các trường phụ thuộc chỉ đọc, vì vậy bạn không phải suy nghĩ về những gì sẽ xảy ra nếu một sự phụ thuộc được thay thế. –
Tôi đã chọn phương pháp này, cá nhân tôi vẫn muốn biết liệu bạn có thể giả định việc tiêm tài sản hay không, nhưng điều này giúp khắc phục sự cố tôi gặp phải. Chúc mừng. –