Tôi có một phương pháp trên một giao diện trông như thế này và tôi muốn còn sơ khai nó với Rhino Mocks:Rhino Mocks: Tôi có thể sử dụng Stub() khi một trong các tham số của tôi là Biểu thức <Func<T1, T2>>?
TValue GetPropertyOfExistingObject<TValue>(long id, Expression<Func<T, TValue>> propertyExpression);
Mã của tôi mà không được stubbing trông như thế này:
var service = MockRepository.GenerateStub<IQuoteService>();
service.Stub(s => s.GetPropertyOfExistingObject(1, q => q.QuoteNumber)).Return(1234);
Chú ý rằng một của các tham số trong phương thức đó là Expression<Func<T1, T2>>
và lệnh này không trả lại giá trị được chỉ định. Tôi biết tôi có thể làm điều này bằng cách sử dụng WhenCalled() nhưng tôi đã tự hỏi nếu Stub() nên làm việc với các thông số biểu hiện hoặc nếu tôi chỉ làm điều gì đó sai.
Điều này hiện chỉ hoạt động cho các phương thức trong biểu thức, không phải thuộc tính. Bạn sẽ cần phải thêm thuộc tính phù hợp với Expression Matcher. Ngoài ra, nếu phương thức có đối số, bạn cũng sẽ cần so sánh các đối số đó. – Tim
Điểm quan trọng! Vẫn đủ công bằng - làm việc tốt cho các phương pháp. – Jan