gpt4 book ai didi

c# - Moq - 验证最后一次调用方法

转载 作者:行者123 更新时间:2023-12-02 05:16:57 27 4
gpt4 key购买 nike

public interface IMouseTraits
{
void ForceCursor(Cursor cursor);
void SetCursor(Cursor cursor);
}

1) 如何验证对 SetCursor 的最后一次调用是使用 Cursors.Arrow(允许使用不同的参数多次调用 SetCursor 和 ForceCursor)。

2) 如何验证 SetCursorForceCursor 的最后一次调用是 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)); // ?
}

最佳答案

您可以使用回调来捕获调用:

[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));
}

关于c# - Moq - 验证最后一次调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14520294/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com