我是
NSubstitue
模拟框架的新手。
我有以下要求:
DoSomething
参数。myList
)代码应该如下所示:
mockDependency.When(x => x.DoSomething(Arg.Is<string>(s => s == "specificParameter")))
.Do(x => myList.Add(x.Name))
.Return("ReturnValue");
我知道满足上述要求的唯一方法是执行以下操作:
mockDependency.When(x => x.DoSomething(Arg.Is<string>(s => s == "specificParameter")).Do(x => myList.Add(x.Name))
然后,单独配置返回值:
mockDependency.DoSomething(Arg.Is<string>(s => s == "specificParameter")).Return(myValue)
有没有更简单的方法可以达到要求?
我知道在
fakeItEasy
我可以做这样的事情:
A.CallTo(() => mockDependency.DoSomething(A<string> .That.Matches(x=> x == "specificParameter") )).Invokes(x => myList.Add(x.Name)).Returns(myValue)
您可以将通过
Returns
返回值与使用 AndDoes
执行操作结合起来。
public class Tests
{
[Fact]
public void Test2()
{
var myList = new List<string>();
var mock = Substitute.For<IWorker>();
mock.DoSomething("specificParameter")
.Returns("ReturnValue")
.AndDoes(o => myList.Add(o.ArgAt<string>(0)));
var result = mock.DoSomething("specificParameter");
}
}
public interface IWorker
{
string DoSomething(string value);
}