Có cách nào để sử dụng mocks hoặc fakes trong các bài kiểm tra đơn vị của bạn mà không cần phải sử dụng tiêm phụ thuộc hoặc đảo ngược hoặc kiểm soát?Mocking mà không có IoC hoặc Dependency Injection
Tôi tìm thấy cú pháp này có thể được sử dụng với TypeMock Isolator (http://learn.typemock.com/). Mặc dù đó là một sản phẩm thương mại, vì vậy tôi đã hy vọng rằng các khung công tác khác (như RhinoMocks) sẽ giới thiệu cú pháp như vậy ở một giai đoạn nào đó.
/// Can mock objects WITHOUT DEPENDENCY INJECTION.
var hand = Isolate.Fake.Instance<Hand>();
var mouth = Isolate.Fake.Instance<Mouth>();
Isolate.Swap.NextInstance<Hand>().With(hand);
Isolate.Swap.NextInstance<Mouth>().With(mouth);
...
//notice we're not passing the mocked objects in.
var brain = new Brain();
brain.TouchIron(iron);
...
Điều này rất hấp dẫn đối với tôi loại cú pháp này, tất cả đều diễn ra tự động. Chúng ta có thể tạo ra một bộ não ở đó mà không cần các phụ thuộc bắt buộc và khung mocking sẽ tự động thay thế các phụ thuộc cho các đối tượng giả. Bất kỳ cơ thể nào nhìn thấy loại điều này ở bất cứ nơi nào khác?
Não lớp constructor trông như bây giờ bằng cách sử dụng cú pháp ở trên này,
public Brain()
{
_hand = new Hand();
_mouth = new Mouth();
}
Trong khi ví dụ dependency injection sẽ trông như thế này,
public Brain(IHand hand, IMouth mouth)
{
_hand = hand;
_mouth = mouth;
}
Cảm ơn.
Đồng ý, các nhà xây dựng mặc định chuyển tiếp đến thực tế là một kỹ thuật rất hữu ích. –