契約が作成されると、ユニット、ユーザー、割引が適用され、それらのパラメーター項目(モデル)を使用して請求書が生成されます。
ブラウザではすべて正常に動作します。しかし、スペックを実行すると、私はundefined method 'value' for nil:NilClass [/app/models/option.rb:19:in 'get_from_database'
Option.rbの18〜20行目。これは、データベースからサイトオプション(管理者が構成可能)を取得するためのモデルです。正常に動作します(ブラウザテスト)。
def self.get_from_database(name)
$option[name] = self.find_by_name(name).send('value')
end
そしてそれはContract.rbから呼び出されています:
def start_date=(date)
self[:start_date] = Date.strptime(date, Option.get_from_database('short_date'))
end
このエラーが発生する理由はありますか?この行をコメントアウトしてスペックテストを再実行すると、nil:NilClass
別のクラスメソッド呼び出しから別のエラーが発生します。
rspecを使い始めたばかりなので、何かが足りないと確信しています。注:最初のテストは機能しますが、2番目のテストは機能しません。
require 'spec_helper'
module ContractSpecHelper
def contract_params
{ :start_date => "08/09/2012",
:client_id => '1',
:pay_interval_id => '1',
:billing_day => "1",
:prorated => '1',
:require_next => "1",
:include_today => "1",
:unit_id => '45',
:due => "1" }
end
end
describe 'Contract' do
include ContractSpecHelper
before :each do
@contract = Contract.new
end
describe '#new' do
it "requires a unit, user, and pay interval id" do
@contract.should_not be_valid
end
it "creates an invoice once saved" do
@contract.attributes = contract_params
@contract.save
@contract.should have(1).invoice
end
end
end