4

正しいコードを追加するたびに、 AboutMethods:0x00000101841a28 番号が毎回変わるため、同じエラーが発生します。スタックしているようで、このループから抜け出す方法がわかりません。一度はうまくいき、次のステップに進みましたが、その後エラーが発生しました。

コンソールから与えられた正しいコード行を入力してはいけませんか?

def test_calling_private_methods_with_an_explicit_receiver
exception = assert_raise(NoMethodError) do
  self.my_private_method
end
assert_match "private method `my_private_method' called for #<AboutMethods:0x000001008debf8>", exception.message

終わり

AboutMethods:0x000001008debf8 は毎回変更されますが、この問題へのアプローチ方法がわかりませんか?

4

1 に答える 1

7

AboutMethods:0x...メソッドの出力で、inspect通常 (この場合も) クラス名 ( AboutMethods) とオブジェクト ID ( 0x...) が含まれます。オブジェクト ID はメモリ内のオブジェクトの場所に関連付けられているため、毎回変更されます。

私の経験では、例外から文字列をチェックする価値はほとんどありません (脆弱です)。ただし、必要に応じて正規表現を使用してください。

assert_match /private method `my_private_method' called for \#\<AboutMethods:.*/

于 2012-06-26T16:26:01.253 に答える