han*_*aad 2 c# unit-testing moq
public interface IMouseTraits
{
void ForceCursor(Cursor cursor);
void SetCursor(Cursor cursor);
}
Run Code Online (Sandbox Code Playgroud)
1)如何验证对SetCursor的最后一次调用是Cursors.Arrow(多次调用SetCursor和ForceCursor并允许使用不同的参数)。
2)我如何验证双方的最后一次通话SetCursor和ForceCursor是SetCursor允许的(多次调用和的setCursor与ForceCursor不同参数)。
[Test]
public void AfterOperationCursorIsArrow()
{
var mock = new Mock<IMouseTraits>();
varw = new WindowOperation(mock.Object);
w.Execute();
mock.Verify(traits => traits.SetCursor(Cursors.Arrow)); // ?
}
Run Code Online (Sandbox Code Playgroud)
您可以使用回叫来捕获呼叫:
[Test]
public void AfterOperationCursorIsArrow()
{
string lastMethod = null;
Cursor lastCursor = null;
var mock = new Mock<IMouseTraits>();
mock.Setup(m => m.ForceCursor(It.IsAny<Cursor>()))
.Callback((Cursor c) => lastMethod = "ForceCursor");
mock.Setup(m => m.SetCursor(It.IsAny<Cursor>()))
.Callback((Cursor c) => {
lastMethod = "SetCursor";
lastCursor = c;
});
var w = new WindowOperation(mock.Object);
w.Execute();
Assert.That(lastMethod, Is.EqualTo("SetCursor"));
Assert.That(lastCursor, Is.EqualTo(Cursors.Arrow));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
476 次 |
| 最近记录: |