1 useful links:
Mock Objects and Stubs: The Bottle Brush of TDD
The Difference between Mocks and Stubs
2 self notes:
stub将返回的数据硬编码,以使对输入返回期望输出
mock相对较新,用于记录和验证两个类之间的交互。
动态mock:通过mock引擎实现,将被测试类作为参数传入。记录了调用状态。
静态mock,通过成员变量手工记录调用情况或内部状态。
典型的使用mock的方法:
[Test]
public void CloseViewWhenViewIsNotDirty()
{
// 1.) Create the mock objects
IMock msgBoxMock = new DynamicMock(typeof(IMessageBoxCreator));
IMock viewMock = new DynamicMock(typeof(IView));
// 2.) Define the expected interaction
msgBoxMock.ExpectNoCall("AskYesNoQuestion", typeof(string), typeof(string));
viewMock.ExpectAndReturn("IsDirty", false);
viewMock.Expect("Close");
// 3.) Create the presenter class with the mock objects
Presenter presenter = new Presenter(
(IView) viewMock.MockInstance,
(IMessageBoxCreator) msgBoxMock.MockInstance);
// 4.) Perform the unit of work
presenter.Close();
// 5.) Verify the interaction
msgBoxMock.Verify();
viewMock.Verify();
}