Я недавно модернизировал мое приложение Rails с Rails 4 и в моем RSpec тестов одна строка вызывает ошибку:Почему мои тесты Rspec терпят неудачу после обновления Rails 4?
ActiveRecord::StatementInvalid:
TypeError: can't cast Array to string: INSERT INTO "items" ("created_at", "date", "description", "invoice_id", "position", "price_in_cents", "quantity", "tax_rate", "updated_at") VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
Это мой код:
# /spec/controllers/invoices_controller_spec.rb:
require 'spec_helper'
describe InvoicesController do
before :each do
...
@invoice = FactoryGirl.create(:invoice, :project_id => @project.id, :user => @user, :items_attributes => [ FactoryGirl.attributes_for(:item) ]) # causing havoc
end
...
end
# /spec/factories.rb:
factory :invoice do
number 123
recipient { Faker::Name.name }
date { Time.zone.now.to_date }
association :user
association :project
factory :invoice_with_item do
items { |i| [i.association(:item)] }
end
end
Может Кто-нибудь скажет мне, что мне здесь не хватает?
Я предполагаю, что это как-то связано с тем, что класс Invoice
принимает вложенные элементы.
Мы узнаем, в чем проблема на самом деле? «Вызывать хаос» не очень описательно. – sevenseacat
Почему вы не являетесь пользователем invoice_with_items ?? invoice = FactoryGirl.create (: invoice_with_items,: project_id => project.id,: user => user)? во всяком случае, как сказал семисекат, «причинение хаоса» никому не помогает – arieljuod
@sevenseacat: ОК, добавлено сообщение об ошибке выше. – Tintin81