NSubstitute 使用参数构造函数设置 arg

NSubstitute set up arg with parameter constructor

我们如何使用构造函数参数设置参数?

下面是一个示例用例。

public interface ICalculator
{
    int Add(AddWithValues withValues);
}

public class AddWithValues {
    AddWithValues(int a, int b) {
      A = a;
      B = b;
    }
   
    public int A {get;}
    public int B {get;}
}

calculator = Substitute.For<ICalculator>();
calculator
   .Add(Arg.Is<AddWithValues>(??));

如果 Add 接受 a 和 b 整数,文档会显示如何设置它们。 我不能使用谓词,因为 A 和 B 是只读属性。在这种情况下,我们如何设置 AddWithValues(依次指定 a 和 b 值)?

如果我对你的问题理解正确,我们可以使用谓词来做到这一点:

calculator
   .Add(Arg.Is<AddWithValues>(x => x.A == 42 && x.B > 10));

如果您在 AddWithValues 上定义相等性,您也可以使用它来匹配所需的值:

calculator
   .Add(new AddWithValues>(42, 21)); // Assuming AddWithValues defines value equality