我正在使用 NSubstitute 进行单元测试。我需要检查一个对象是否被发送到我正在测试的方法中的一个 void 方法。我只需要检查发送的对象是否具有特定值的属性之一。
例如。
///The object in question
public class Person
{
public string Name { get; set; }
public string Surname{get;set;}
}
两种简单的方法
public void NameStartsWithA(Person person)
{
//do something to person when name starts with A
}
public void NameStartsWithB(Person person)
{
//do something to person when name starts with B
}
我正在编写测试的方法。
public void MethodBeingTested()
{
var person = new Person() {Name = "Adrian",Surname="SomeSurname"};
if(person.Name.StartsWith("A"))
NameStartsWithA(person);
else
NameStartsWithB(person);
}
如果人名以 A 开头,我需要使用 NSubstitute 检查是否使用以 A 开头的名称调用了“NameStartsWithA”。
到目前为止,我的单元测试看起来像这样
_someService.Received().NameStartsWithA(new Person(){Name="Adrian",Surname=Arg.Any<string>()});
但是 Nsubstitute 说该函数从未被调用,但是当我使用“RecievedArgumentsAny()”进行相同的测试时,它通过了。
希望这个例子能帮助你理解我想要完成的事情。