Tôi đang sử dụng bản beta của Microsoft Fakes trong Visual Studio 11. Làm thế nào tôi có thể xác minh rằng phương thức của một phụ thuộc được gọi bởi hệ thống của tôi đang được kiểm tra?Làm cách nào tôi có thể xác minh rằng bản gốc của Microsoft Fakes (beta)/shim được gọi (như AssertWasCalled in Rhino Mocks)?
Trả lời
Khi chức năng xác minh không được bao gồm trong bản Beta Beta của Microsoft, mã bên dưới là một thử nghiệm cơ bản cho dù phương thức phụ thuộc có được gọi hay không. Bạn có thể tăng cường kiểm tra true
để kiểm tra các giá trị tham số hoặc các điều kiện khác của cuộc gọi thích hợp.
Test:
[TestMethod]
public void TestMethod1()
{
var secondDoItCalled = false;
var secondStub = new Fakes.ShimSecond();
secondStub.DoIt =() => { secondDoItCalled = true; };
var first = new First(secondStub);
first.DoIt();
Assert.IsTrue(secondDoItCalled);
}
Lớp học:
public class First
{
readonly Second _second;
public First(Second second) { _second = second; }
public void DoIt() {
//_second.DoIt();
}
}
public class Second {public void DoIt(){}}
Bỏ ghi chú những dòng trên để xem qua bài kiểm tra.
Một tùy chọn khác mà bạn có để thực hiện xác minh hành vi với khung Microsoft Fakes là sử dụng lớp StubObserver có trong không gian tên Microsoft.QualityTools.Testing.Fakes.Stubs. Sử dụng khung công tác, bạn tạo ra một nhánh cho sự phụ thuộc của bạn. Sau đó, trên Stub của bạn, bạn có thể đặt thuộc tính InstanceObserver thành một StubObserver mới. Sử dụng lớp StubObserver, bạn có thể "truy vấn" các cuộc gọi phương thức được thực hiện cho sự phụ thuộc của bạn. Phương pháp thử nghiệm của bạn sẽ giống như dưới đây
//Arrange
var dependency = new StubIDependency { InstanceObserver = new StubObserver() };
var sut = new SystemClass(dependency);
// Act
sut.DoSomething();
// Assert
var observer = (StubObserver)dependency.InstanceObserver;
Assert.IsTrue(
observer.GetCalls().Any(call => call.StubbedMethod.Name == "DoSomething"));
Có một cái nhìn bài này: http://www.peterprovost.org/blog/2012/11/29/visual-studio-2012-fakes-part-3/
Cheers
- 1. Rhino Mocks - Stub .Expect vs .AssertWasCalled
- 2. Rhino Mocks: "Xác minh" và "Xác nhận"
- 3. IgnoreArguments Rhino Mocks() và kiểm tra nếu một lambda được gọi một cách chính xác
- 4. Rhino Mocks AssertWasCalled (nhiều lần) trên thuộc tính getter bằng cách sử dụng AAA
- 5. Rhino Mocks - AssertWasCalled: Cách cải thiện thông báo chẩn đoán không rõ ràng khi đối số không chính xác
- 6. Làm thế nào tôi có thể dễ dàng thay thế lắp ráp Microsoft Fakes?
- 7. Rhino Mocks, VerifyAllExpectations
- 8. Mockito - xác minh rằng không có phương pháp nào của cộng tác viên được gọi là
- 9. Rhino Mocks Partial Mock
- 10. Rhino Mocks & Compact Framework
- 11. Rhino Mocks: Mocking HttpRequestBase.Files
- 12. Làm thế nào để Shim DbContext với Microsoft Fakes?
- 13. Rhino Mocks Khẳng định tài sản Setter được gọi với đúng đối tượng loại
- 14. Làm thế nào tôi có thể chứng minh rằng fread gọi ReadFile và các cuộc gọi fopen CreateFile
- 15. Microsoft Fakes x64 không x86 và v4.5
- 16. GroupMe đã xác minh số của tôi như thế nào?
- 17. Rhino Mocks stubs và mocks chỉ tốt cho giao diện?
- 18. Rhino Mocks - Đặt thuộc tính nếu phương thức được gọi là
- 19. Rhino Mocks AAA Bắt đầu nhanh?
- 20. Rhino Commons và Rhino Mocks Tài liệu tham khảo?
- 21. Rhino Mocks. Làm thế nào để thêm kỳ vọng rằng xử lý sự kiện được đăng ký
- 22. Rhino Mocks Hướng dẫn từng bước
- 23. Mocking COM Giao diện bằng cách sử dụng Rhino Mocks
- 24. Cách đặt cuộc gọi Mong đợi để kiểm tra xem phương thức không được gọi trong Rhino Mocks
- 25. Với hai chứng chỉ, làm cách nào tôi có thể xác minh rằng một chứng chỉ đã được ký bằng khóa riêng của người khác?
- 26. Sử dụng Mockito để xác minh rằng không có gì được gọi sau phương thức
- 27. Rhino Mocks: Repeat.Once() không hoạt động?
- 28. Rhino Mocks - Làm thế nào để khẳng định một phương pháp giả được gọi là n lần?
- 29. Tôi xác minh rằng người dùng đã cài đặt ứng dụng iPhone như thế nào?
- 30. Moq - xác minh rằng không có phương pháp được gọi là
Có thể áp dụng bằng cách nào đó để trường hợp của shimming bởi 'AllInstances'? – SerG