Cap*_*in0 10 unit-testing nsubstitute
我正在使用NSubstitute进行单元测试.我需要检查一个对象是否发送到我正在测试的方法中的void方法.我只需要检查对象是否与其中一个属性为特定值一起发送.
例如.
///The object in question
public class Person
{
public string Name { get; set; }
public string Surname{get;set;}
}
Run Code Online (Sandbox Code Playgroud)
两个简单的方法
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
}
Run Code Online (Sandbox Code Playgroud)
我正在编写测试的方法.
public void MethodBeingTested()
{
var person = new Person() {Name = "Adrian",Surname="SomeSurname"};
if(person.Name.StartsWith("A"))
NameStartsWithA(person);
else
NameStartsWithB(person);
}
Run Code Online (Sandbox Code Playgroud)
如果人名以A开头,我需要检查,使用NSubstitute调用名称以A开头的"NameStartsWithA".
到目前为止我的单元测试看起来像这样
_someService.Received().NameStartsWithA(new Person(){Name="Adrian",Surname=Arg.Any<string>()});
Run Code Online (Sandbox Code Playgroud)
但是Nsubstitute说这个函数从未调用过,但是当我用"RecievedArgumentsAny()"进行相同的测试时,它就会通过.
希望这个例子可以帮助你理解我想要完成的事情.
Cap*_*in0 14
让这个工作.发布代码.
_someService.Received().NameStartsWith(Arg.Is<Person>(p => p.Name.Startswith== "A"));
Run Code Online (Sandbox Code Playgroud)
希望这将有助于未来的人.
| 归档时间: |
|
| 查看次数: |
3730 次 |
| 最近记录: |