2
我正在閱讀Kent Beck的書「Test Driven Development:By Example」。在他的書中,有一個編碼例:美元對象錯綜複雜
public class Dollar
{
public int _amount;
public Dollar(int amount)
{
_amount = amount;
}
public Dollar Times(int multiplier)
{
return new Dollar(_amount *= multiplier);
}
}
[TestMethod]
public void TestMethod2()
{
Dollar five = new Dollar(5);
Dollar product = five.Times(2);
Assert.AreEqual(10, product._amount);
product = five.Times(3);
Assert.AreEqual(15, product._amount);
}
據肯特,第二個美元對象「的產品,」爲了保持原來的「十二五」美元對象是必要的;但是,第二個斷言返回false,因爲product._amount等於30.我一直無法在此文本中找到任何勘誤。爲了讓第二個斷言等於true或15 == 15,Kent的代碼如何改變?這本書的例子有缺陷嗎?爲什麼第二個斷言中的product._amount不等於15?
'_amount * = multiplier'是非常錯誤的。 – SLaks
我的部分有一個打字錯誤:(_amount * = multiplier)應該是(_amount * multiplier)。謝謝SLaks –
你確定你沒有做'product.Times(3)'?我看不到你如何得到30. –