お世話になります。Railsを勉強中の柳澤と申します。
現在、検索画面のfunctionテストを行っているのですが、予想外のnilが返却されてしまいErrorとなってしまいます。
検証したいテストは、検索条件に合致する件数を取得し、件数が予想している値と一致するというものです。
テストの対象のcontroller.rbとtest.rbはそれぞれ下記の通りです。
*controller.rbの内容
def search
@keyword = params[:searchword]
if
@keyword.blank?
flash.now[:warning] =
'検索条件が入力されていません!!'
end
conditions = ['group_id
like ? or group_nm like ?', @keyword, "%#{@keyword}%" ]
@group_masters =
GroupMaster.find(:all,
:order => 'group_id', :conditions => conditions)
render :action =>'search'
end
*test.rbの内容
def
test_search
@group_masters = post :search, :searchword
=> "100"
@group_masters.reload
assert_equal 1, @group_masters.length
end
*DBのセットアップ内容は下記の通りです。
one:
id: 1
group_id:
100
group_nm: A
del_flg: 0
ins_user:
999999
upd_user: 999999
created_at: <%=
Time.now.strftime("%Y-%m-%d %H:%M:%d") %>
updated_at: <%=
Time.now.strftime("%Y-%m-%d %H:%M:%d") %>
*出力されたエラーメッセージは下記の通りです。
1)
Error:
test_search(GroupMastersControllerTest):
NoMethodError: You have a
nil object when you didn't expect it!
You might have expected an instance of
ActiveRecord::Base.
The error occurred while evaluating
nil.reload
./test/functional/group_masters_controller_test.rb:49:in
`test_search'
自分としては、検索条件に合致する1レコードを取得できると考えていたのですが、nilが返却されているようです。
皆様のお知恵をお貸し頂ければ幸いです。よろしくお願いします。