2

我有一个简单的模拟类 longRunningLibrary 我希望从 Moq 中返回的方法输出一些文本(“此方法...”),您可以在以下代码部分中看到:

 _longRunningLibrary
   .Setup(lrl => lrl.RunForALongTime(30))
   .Returns("This method has been mocked!");

所以.. 我希望在 resharper 的单元测试会话部分中输出此文本,但我做不到。如何进行 ?

4

2 回答 2

3

使用最小起订量,您可以这样做:

[Test]
public void MoqSample()
{
    var mock = new Mock<ILongRunner>();
    mock.Setup(lr => lr.RunForALongTime(It.IsAny<int>()))
        .Returns("This method has been mocked!");
    ILongRunner longRunner = mock.Object;
    Console.WriteLine(longRunner.RunForALongTime(1));
    Assert.AreEqual("This method has been mocked!", longRunner.RunForALongTime(2));
    Assert.Pass(longRunner.RunForALongTime(3));
}

public interface ILongRunner
{
    string RunForALongTime(int i);
}

使用 R# 测试运行程序时可以使用 Console.WriteLine(...),不确定何时使用 VS。

Assert.Pass(...) 打印 Success: 消息

于 2013-06-18T15:45:55.320 回答
1

另一种选择是使用回调:

_longRunningLibrary
   .Setup(lrl => lrl.RunForALongTime(30))
   .Returns("This method has been mocked!")
   .Callback<int>( p => Console.WriteLine("Called with: {0}", p);
于 2013-06-19T14:04:20.507 回答