0

こんにちは、Ruby の単体テストに問題があります。初心者なので、何か助けていただければ幸いです。

class TestItem < Test::Unit::TestCase
 def setUp
  **@item**=Item.new('Food','Burger',120)
 end
 def testGetType
  assert_equal(**@item**.getType,'Food')
 end
end

ここで、setUp() で宣言してテスト関数で使用すると、インスタンス変数 @item の値はnilになります! したがって、nil-class の no method 'getType' のようなエラーが発生します

しかし、assert_equal(Item.new('Food','Burger',120).getType,'Food') のように直接使用すると、正常に動作します。

私の間違いを指摘してください、事前に感謝します

4

1 に答える 1

2

setupメソッドの名前はsetupではなくsetUpです。実際、 Ruby で呼び出されるメソッドを見つけることsetUpはありません。なぜなら、Ruby の標準的なメソッド命名スタイルはsnake_caseであり、 ではありませんcamelCasegetType(同じことがandにも当てはまりますtestGetType。ところで、and である必要がget_typeありtest_get_typeます。実際、Ruby ではゲッターの前に は付けられないgetため、実際には and である必要がtypeありtest_typeます。ただし、Ruby では、すべてのオブジェクトに既にtypeメソッドが含まれていることに注意してください。非推奨。)

于 2010-10-08T23:05:24.667 に答える