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()
时,必须以某种方式注入模拟。你是怎么做到的?据我所知,文件应该是这样的。。。