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

Cursors.Arrow1) SetCursor への最後の呼び出しが(さまざまな引数を使用した SetCursor と ForceCursor への複数の呼び出しが許可されている) であったことを確認するにはどうすればよいですか。

SetCursor2)との両方の最後の呼び出しが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));  // ?
}
4

1 に答える 1

5

コールバックを使用して呼び出しをキャプチャできます。

[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));
}
于 2013-01-25T10:58:50.283 に答える