このセッションでは
デバッガーとバグの見つけ方について 完結させます。
decrement の定義を変えて
わざと間違いを作ってみましょう。
ここで、引き算のかわりに足し算にします。
テストを実行すると testDecrement は失敗します。
実行してよく見てみると
count は 5 ではなく 9 になっていると わかります。
つまりここでカウンターが作られているので
このあたりの表現式に誤りがあるはずです。
そこでコードを実行して カウンターが作られた直後で
止めてみたいと思います。
これでどのメソッドが間違っているか
わかるはずです。
ここに self halt を追加します。 これは Pharo でブレークポイントを
設定する方法です。 メソッドをコンパイルして
実行します。 コードが実行されて halt のところで止まります。
Over をクリックします。
Into でcount メソッドの内部に入ってみます。
そうすることで
count 値が nil で anInteger が 7 だとわかります。
そして Over します。
戻って、次は decrement です。
また Into で内部に入って見てみます。
問題はそこにあるはずだからです。
すると decrement は -1 しなければ ならないことがわかります。
修正します。
そして Proceed をクリックします。
Proceed をクリックすると halt が まだ残っているので、消します。
Proceed すると、テストはグリーンになります。