2013-01-25 28 views
1
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)); // ? 
} 

回答

4

您可以使用調來捕獲電話:

[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)); 
} 
相關問題