Rspec no方法错误分配

时间:2013-02-17 06:36:51

标签: ruby-on-rails-3 rspec

在运行测试之前,我显然在我的Customer模型中添加了一个名为ct_ratio的新字段。当我现在在我的发票规范上运行测试时,它们会失败并显示“No method error,ct_ratio =”

Customer.rb

class Customer < ActiveRecord::Base
attr_accessible :billing_address, :customer_currency, :email, :first_name, :last_name, :mobile,  :name, :payment_terms, :phase_type, :readings_attributes, :pays_vat, :ct_ratio
  before_validation do
 self.ct_ratio ||= 1
 end
end

Invoice_spec

describe Invoice do

context 'create_item_from_readings' do
before :each do
  @customer = FactoryGirl.create :customer
  @reading1 = @customer.readings.create! reading1: 100, date_of_reading: 30.days.ago
  @reading2 = @customer.readings.create! reading1: 200, date_of_reading: 20.days.ago
  @reading3 = @customer.readings.create! reading1: 500, date_of_reading: 10.days.ago
  @customer.stub(:unit_cost).and_return(100)
end

it "should create an invoice item for all reading" do
  invoice = Invoice.new customer: @customer, invoice_date: 15.days.ago, due_date: Date.today

  item = invoice.create_item_from_readings
  item.rate.should   == 100
  item.amount.should == 100 * 100
  item.description.should == "Electricity used from #{@reading1.date_of_reading.strftime('%d/%m/%Y')} to #{@reading2.date_of_reading.strftime('%d/%m/%Y')} -    100 units"
end

我向工厂女孩添加了ct_ratio

require 'factory_girl'

FactoryGirl.define do

 factory :customer do
 name 'Test Test'
 first_name "Test"
 last_name "Test"
 mobile "00000000"
 billing_address "Kampala"
 payment_terms "Immediate"
 phase_type "Single Phase"
 customer_currency "UGX"
 pays_vat false
 email "test@test.com"
 ct_ratio 1
end

factory :reading do |f|
 f.reading1 100
 f.reading2 150
 f.reading3 200
 f.date_of_reading 30.days.ago
end

end

1 个答案:

答案 0 :(得分:0)

当不通过rake运行测试时,这是一个常见错误,并且您的迁移未在测试数据库上运行。

首先运行RAILS_ENV=test rake db:migrate并查看您的测试套件。