なかだです。

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はできる。
    中田 伸悦