2009-08-18 33 views
6

Làm cách nào để giả lập đối tượng có hàm tạo bằng cách sử dụng Rhino Mocks?Giả lập đối tượng bằng hàm tạo - Rhino Mocks

Ví dụ như thế nào đối tượng này sẽ được chế nhạo ...

public class Foo : IFoo 
{ 
    private IBar bar; 
    public Foo (IBar bar) 
    { 
     this.bar = bar 
    } 

    public DoSomeThingAwesome() 
    { 
     //awesomeness happens here 
    } 

} 

Trả lời

13

Bạn không nhạo báng Foo - bạn thử IFoo. Để kiểm tra Foo chính nó, bạn giả lập IBar và chuyển mô hình vào hàm tạo.

Bạn nên cố gắng tránh việc điều mà dựa vào IFoo trường hợp xây dựng một cách rõ ràng của Foo: họ nên hoặc được một nhà máy nếu IFoo bằng cách nào đó, hoặc có một IFoo một cách rõ ràng thông qua đối với họ.

+3

Bây giờ, bạn đã sẵn sàng rõ ràng rằng bạn đã nói điều đó. :) –

4
var myIFoo = MockRepository.GenerateStub<IFoo>(); 

bạn có thể kiểm tra khiếp sợ đã xảy ra qua

myIFoo.AssertWasCalled(f => f.DoSomethingAwesome()); 
2

Nó được một lúc kể từ khi tôi sử dụng tê giác nhưng tôi tin rằng bạn có thể làm:

mockRespository.StrictMock<Foo>(ibarVariable)

Tuy nhiên nó sẽ không thực sự làm việc trừ khi tất cả các thành viên của Foo là ảo.

Các vấn đề liên quan