在编写单元测试时,我想使用Assert.AreSame(..)
检查一个Nullable<T>
类型时出现了意外的结果。然后我意识到以下代码会失败:
int? k = 10;
Assert.IsTrue(ReferenceEquals(k, k));
这里发生了什么事情?
另外,我如何确保我的方法返回的是我传递给模拟/存根的完全相同的实例,而不只是执行"return 10"?
编辑:
我通常会这样做,以确保在我的单元测试中获得一致的结果:
//Arrange
var result = new string(new[] {'1', '2', '3'});
mock.SetUp(x => x.Method("something").Returns(result);
//Act here
//Assert
Assert.AreSame(result, instance.ValueAssigned);
如果我在
Method(..)
中写下return "123"
,上述测试将会失败。我试图找到一种使用 Nullable 进行相同操作的方法。