如何修改Moq中传入参数的值

时间:2015-01-15 15:05:07

标签: c# unit-testing callback nunit moq

我正在使用moq为一个方法编写单元测试,该方法的参数由ref传递。我需要在调用方法后修改该参数的值。我正在尝试使用Callback for Moq设置,但它没有更新值。

myMock = new Mock<IMyObject>();
Foo foo = null;
myMock.Setup(x => x.GetResult(It.IsAny<string>(), ref foo))
          .Returns("SUCCESS")
          .Callback(() => { foo = new Foo ();});

我在这里看到了类似的问题但他们回答使用回调,但我总是把foo的值变为null。

1 个答案:

答案 0 :(得分:0)

过去12小时我遇到了类似的问题,我实现结果的唯一方法是手动继承和模拟对象。

在您的情况下,您可以设置一个伪对象,该对象继承IMyObject并定义它的.GetResult行为以初始化一个新的Foo对象,然后返回一个&#34; SUCCESS&#34;。

然后,您可以使用NUnit api进行断言。