无效方法的替代测试
NSubstitute test for void method
我想验证参数 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)
可以设置的灵活性,以便它实际上 returns 是一个模拟?如果是这样,您可以使用 var mock = Substitute.For<IYourObject>()
设置模拟并调用 mock.Received().IdStatus
(see here).
第二种:您需要在测试方法中调用 GetObject(id)
并查看是否存在预期值。
我想验证参数 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)
可以设置的灵活性,以便它实际上 returns 是一个模拟?如果是这样,您可以使用 var mock = Substitute.For<IYourObject>()
设置模拟并调用 mock.Received().IdStatus
(see here).
第二种:您需要在测试方法中调用 GetObject(id)
并查看是否存在预期值。