任何人都可以帮助我理解,因为预期值和实际值在ToString()方法中有不同的结果.当我为我打开手表时它是相同的值.
谢谢
码:
[TestMethod]
public void SerializeDecimalWithTwoDecimals()
{
var expected = decimal.Round(1.00M,2);
var actual = decimal.Round(1M,2);
Assert.AreEqual(expected.ToString(), actual.ToString());
}
Run Code Online (Sandbox Code Playgroud)
基本上不要相信Watch窗口.它可以用值的字符串表示来玩愚蠢的游戏.这两个值相等(expected == actual将为真),但它们不相同 - 保留尾随零.
这里,该Round方法实际上并没有实际改变值,所以你有效地得到了:
var expected = 1.00m;
var actual = 1m;
Assert.AreEqual(expected.ToString(), actual.ToString());
Run Code Online (Sandbox Code Playgroud)
......并且1.00m.ToString()是"1.00",而是1m.ToString()"1".