C#Mock方法返回值在实际执行时计算

时间:2015-07-03 05:09:43

标签: c# unit-testing mocking nunit rhino-mocks

我正在使用Nunit测试Rhino-Mocks进行代码单元测试 我的代码如下;

_mockHandler.Expect(m => m.DoSomething(Arg<string>.Is.Anything, Arg<string>.Is.Anything))
            .Return(myList["XXX"]);

myList的内容正在从正在运行的线程更新。一旦上述行执行myList["XXX"]的值为空。但是在这个方法时,从代码myList["XXX"]调用的是一个值。

有没有办法配置,请在调用方法时参考实际值?

1 个答案:

答案 0 :(得分:3)

在运行时而不是记录时返回值的方法是使用 Product (productID, productName, productBrand, productQuantityinstock, productQuantitySold, productCost, productcategoryID*, adminstaffID* ,) Admin Staff (adminstaffID, adminstaffName, adminstaffUserName adminstaffPassword,) Product Category (productcategoryID, productcategoryName,) Product_Customer (productID*, customerID*) Customer ( customerID, customerName, customerAddress, customerContact) Tech Staff ( techstaffID, techstaffUsername, techstaffPassword) Service (serviceID, serviceType, serviceCost, serviceStatus, serviceDetails, customerID*, techstaffID*) WhenCalled方法。

在您的情况下,似乎Do是正确的解决方案:(如果您想知道何时使用DoDo阅读my answer

WhenCalled

在上面的示例中,_mockHandler.Expect(m => m.DoSomething(Arg<string>.Is.Anything, Arg<string>.Is.Anything)) .Do(new Func<string,string,string>((s, s1) => myList["XXX"])); 将在您致电(s, s1) => myList["XXX"])时执行,DoSomething中的值将会返回。