Unit testing NSSubstitute,对象作为接收调用中的参数

Unit testing NSSubstitute,对象作为接收调用中的参数,unit-testing,nsubstitute,Unit Testing,Nsubstitute,我正在使用NSubstitute进行单元测试。我需要检查一个对象是否被发送到我正在测试的方法中的void方法。我只需要检查发送的对象中是否有一个属性是某个值 例如 ///正在讨论的对象 公共阶层人士 { 公共字符串名称{get;set;} 公共字符串姓氏{get;set;} } 两种简单的方法 public void NameStartsWithA(个人) { //当名字以字母开头时,对某人做点什么 } 公共无效名称开始(个人) { //当名字以B开头时,对某人做点什么 } 我写测试的方法

我正在使用NSubstitute进行单元测试。我需要检查一个对象是否被发送到我正在测试的方法中的void方法。我只需要检查发送的对象中是否有一个属性是某个值

例如

///正在讨论的对象
公共阶层人士
{
公共字符串名称{get;set;}
公共字符串姓氏{get;set;}
}
两种简单的方法

public void NameStartsWithA(个人)
{
//当名字以字母开头时,对某人做点什么
}
公共无效名称开始(个人)
{
//当名字以B开头时,对某人做点什么
}
我写测试的方法

public-void-MethodBeingTested()
{
var person=new person(){Name=“Adrian”,Name=“some姓氏”};
if(person.Name.StartsWith(“A”))
姓名(人);
其他的
姓名(人);
}
如果人名以A开头,我需要使用NSubstitute检查“NameStartsWithA”是否是用以A开头的名称调用的

到目前为止,我的单元测试是这样的

\u someService.Received().NameStartsWithA(newperson(){Name=“Adrian”,姓氏=Arg.Any()});
但是Nsubstitute说从未调用过该函数,但当我使用“receiveDargumentsany()”执行相同的测试时,它通过了


希望这个例子能帮助你理解我想要实现的目标。

成功了。发布代码

\u someService.Received().NameStartsWith(Arg.Is(p=>p.Name.Startswith==“A”);

希望这将对将来的人有所帮助。

很高兴您能使用它。您可以尝试的另一种方法是修改
MethodBeingTested
,将
人作为参数。然后,您可以通过一个名字以“a”开头的人,并选中
\u someService.Received().NameStartsWithA(person)
(类似地,也可以选择“B”)。