Tôi cần phải kiểm tra các phương pháp sau đây:Sử dụng Moq để xác minh các cuộc gọi được thực hiện theo đúng thứ tự
CreateOutput(IWriter writer)
{
writer.Write(type);
writer.Write(id);
writer.Write(sender);
// many more Write()s...
}
Tôi đã tạo một Moq'd IWriter
và tôi muốn đảm bảo rằng các Write()
phương pháp này được gọi là trong đúng thứ tự.
Tôi đã mã kiểm tra sau:
var mockWriter = new Mock<IWriter>(MockBehavior.Strict);
var sequence = new MockSequence();
mockWriter.InSequence(sequence).Setup(x => x.Write(expectedType));
mockWriter.InSequence(sequence).Setup(x => x.Write(expectedId));
mockWriter.InSequence(sequence).Setup(x => x.Write(expectedSender));
Tuy nhiên, cuộc gọi thứ hai để Write()
trong CreateOutput()
(để viết giá trị id
) ném một MockException
với thông điệp "IWriter.Write() gọi thất bại với Tất cả lời gọi trên mô hình phải có thiết lập tương ứng. ".
Tôi cũng thấy khó tìm thấy bất kỳ tài liệu/ví dụ cập nhật nhất định nào về các chuỗi Moq.
Tôi có làm điều gì sai hay không thể thiết lập chuỗi bằng cách sử dụng cùng một phương pháp? Nếu không, có cách nào khác mà tôi có thể sử dụng hay không (tốt nhất là sử dụng Moq/NUnit)?
thể trùng lặp của [Làm thế nào để kiểm tra trật tự gọi phương pháp với Moq] (http://stackoverflow.com/questions/1765738/how- to-test-method-call-order-with-moq) – sloth
[Bản phát hành mới nhất của Moq, v4.2] (https://github.com/Moq/moq) đã "cải thiện thử nghiệm chuỗi yêu cầu giả" theo [ghi chú phát hành] (https://github.com/Moq/moq4/blob/master/ReleaseNotes.md). –
Tôi đang sử dụng v.4.2.x và có thể xác nhận rằng chức năng trình tự đang hoạt động đối với tôi. –