gpt4 book ai didi

unit-testing - NSubstitute,在接收到的调用中使用对象作为参数

转载 作者:行者123 更新时间:2023-12-04 03:29:03 25 4
gpt4 key购买 nike

我正在使用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()”进行相同的测试时,它将通过。

希望这个例子可以帮助您理解我要完成的工作。

最佳答案

得到这个工作。发布代码。

_someService.Received().NameStartsWith(Arg.Is<Person>(p => p.Name.Startswith== "A"));

希望这会在将来对某人有所帮助。

关于unit-testing - NSubstitute,在接收到的调用中使用对象作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14577139/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com