From: Nobuyoshi Nakada Date: 2009-08-20T23:14:02+09:00 Subject: [ruby-list:46318] Re: undefined method なかだです。 At Thu, 20 Aug 2009 23:02:22 +0900, しん wrote in [ruby-list:46317]: > ./test/unit/document_test.rb として、次のようなコードを作ります > ======= > require 'test_helper' > > class DocumentTest < ActiveSupport::TestCase > def kkk(form_type) > end 以下の二行はメソッド定義の中ではありませんから、クラス定義時に DocumentTestクラス自身をselfとして実行されます。 > testcondition=nil > kkk(testcondition) > end > ./test/unit/document_test.rb:7: undefined method `kkk' for DocumentTest:Class (NoMethodError) kkkはDocumentTestのインスタンスメソッドですから、DocumentTestク ラス自身には定義されていません。 > 例に書いたコードはそぎ落としてここまで簡略しても発生するのですが、 > このエラーがでる前の400行ほどのテストコードでは、このファイル内に > 定義したmethodが期待通り呼ばれていました。 そのときはメソッド定義の中にあったのではないでしょうか。 > 引数に対して undefined local variable or method が出るということは、method は > defined と解釈された と思っているのですが、そもそもそれが勘違い? レシーバと引数の評価はメソッド呼び出しの前に行われます。そこで例 外がおきればメソッドの有無は無関係です。 -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦