Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# N孔隙法的替代试验_C#_Testing_Nsubstitute - Fatal编程技术网

C# N孔隙法的替代试验

C# N孔隙法的替代试验,c#,testing,nsubstitute,C#,Testing,Nsubstitute,我想验证参数idStatus是否分配给myObj实例。 我怎样才能用NSubstitute做到这一点?我想,如果我能以某种方式验证参数到UpdateObject,这将是对该方法的一个很好的测试,但不确定如何做到这一点。有什么想法吗 public void SetObjectStatus(int id, int? idStatus) { var myObj = GetObject(id); myObj.IdStatus = idStatus; UpdateObject(m

我想验证参数
idStatus
是否分配给
myObj
实例。 我怎样才能用NSubstitute做到这一点?我想,如果我能以某种方式验证参数到
UpdateObject
,这将是对该方法的一个很好的测试,但不确定如何做到这一点。有什么想法吗

public void SetObjectStatus(int id, int? idStatus)
{
    var myObj = GetObject(id);
    myObj.IdStatus = idStatus;

    UpdateObject(myObj);
}


[TestMethod]
public void SetObjectStatus_Verify()
{
    //Arrange
    int id = 1;
    int? newStatus = 10;

    //Act
    test.SetObjectStatus(id, newStatus);

    //Assert
    //?? I would like to check that myObj.IdStatus equals newStatus (10).
}

这取决于您是要测试内部构件(白盒测试)还是只测试结果(黑盒测试)

对于第一个问题:您的代码是否为您提供了灵活性,可以设置
GetObject(id)
,以便它实际返回模拟?如果是这样,您可以使用
var mock=Substitute.For()
设置模拟,并调用
mock.Received().IdStatus
()


对于第二个问题:您需要在测试方法中调用
GetObject(id)
,查看是否存在期望值。

这都是接口,所以灵活性没有问题。不过有一个问题。似乎不可能为当前正在测试的类中的方法执行Received()。有办法吗?你能提供完整的代码吗?因为在使用
Received()
时,必须以某种方式注入模拟。你是怎么做到的?据我所知,文件应该是这样的。。。