Tôi đang cố gắng xác minh rằng phương thức trong một mô hình được gọi với tham số đối tượng dự kiến. Tôi đang sử dụng Moq, nUnit và suy nghĩ rằng tính tương thích của AutoFixture sẽ hoàn thành công việc. Dưới đây là một phiên bản đơn giản của những gì tôi đang cố gắng làm.Sử dụng Xác minh để xác nhận các giá trị tham số dự kiến trong lớp Moq mock
Có cách nào để thực hiện điều này với Tự động trộn không? Có cách nào tốt hơn để xác minh rằng Something
được gọi với thông số thích hợp không?
trọng bằng trong lớp A
để so sánh các giá trị tài sản và thay đổi dòng Verify
tới:
barMock.Verify(m => m.Something(a));
đèo, tuy nhiên tôi không muốn ghi đè Equals trong mỗi lớp như A trong dự án của tôi.
namespace Test
{
using Moq;
using NUnit.Framework;
using Ploeh.SemanticComparison.Fluent;
public class A
{
public int P1 { get; set; }
}
public interface IBar
{
void Something(A a);
}
public class Foo
{
public A Data { get; private set; }
public void DoSomethingWith(IBar bar)
{
Data = new A { P1 = 1 };
bar.Something(Data);
}
}
[TestFixture]
public class AutoFixtureTest
{
[Test]
public void TestSample()
{
var foo = new Foo();
var barMock = new Mock<IBar>();
var a = new A { P1 = 1 };
var expectedA = a.AsSource().OfLikeness<A>();
foo.DoSomethingWith(barMock.Object);
expectedA.ShouldEqual(foo.Data); // passes
barMock.Verify(m => m.Something(expectedA.Value)); // fails
}
}
}
+1 Đặc biệt giải pháp cuối cùng là cách tiếp cận chính xác với Mức độ phù hợp. FWIW có một mục công việc cho một chức năng mới cho Likeness để cho phép nó tự động phát ra một proxy ghi đè Equals, mà sẽ đơn giản hóa rất nhiều cú pháp trên: http://autofixture.codeplex.com/workitem/4230 –
Điều đó đã làm điều đó, cảm ơn ! – jaminto