Tôi đã một giao diện định nghĩa làMOQ - thiết lập một phương pháp dựa trên các giá trị tham số (nhiều lý lẽ)
interface IMath
{
AddNumbersBetween(int lowerVal, int upperVal);
}
tôi có thể thiết lập một Moq cơ bản cho các bên trên như sau:
Mock<IMath> mock = new Mock<IMath>();
mock.Setup(m => m.AddNumbersBetween(It.IsAny<int>(), It.IsAny<int>()));
cuộc gọi nó
mock.Object.AddNumbersBetween(1,4);
và sau đó xác nhận rằng nó đã được gọi là
mock.Verify(m => m.AddNumbersBetween(1,4), Times.AtleastOnce());
tôi không thể tìm ra cách để thiết lập các AddNumbersBetween phương pháp như vậy mà nếu upperVal thấp hơn lowerVal một ngoại lệ được ném
mock.Object.AddNumbersBetween(4,1);//should throw an exception
Về cơ bản tìm kiếm cái gì đó như:
mock.Setup(foo => foo.AddNumbersBetween("arg1 is higher than arg2")).Throws<ArgumentException>();
Tôi khuyên bạn chỉ nên triển khai logic loại trừ ngoại lệ với Gọi lại, vì điều đó cho phép bạn truy cập đầy đủ vào cả hai tham số. Theo như tôi biết, các mệnh đề khớp tham số chỉ có thể thực hiện logic dựa trên một tham số duy nhất. –