【发布时间】:2015-07-07 21:28:57
【问题描述】:
我为控制器操作 create 编写了一个规范,当我运行测试时,shell 向我显示一个错误
expected #count to have changed by 1, but was changed by 0
有规格
let(:valid_attributes) { FactoryGirl.attributes_for(:company) }
describe 'with valid params' do
it 'creates a new company' do
expect { post :create, company: valid_attributes }.to change(Company, :count).by(1)
还有工厂
FactoryGirl.define do
factory :company do
title Faker::Company.name
url Faker::Internet.domain_word
image File.open(File.join(Rails.root, '/spec/fixtures/POEox311zoM.jpg'))
end
end
如何解决?我不知道我做错了什么
更新
def create
@company = Company.new(company_params)
if @company.save
redirect_to root_path
else
redirect_to root_path
end
end
【问题讨论】:
-
没有控制器的代码(它是被测控制器?),它可以是任何东西。
-
抱歉,我更新一个问题
-
请发布您的 :company_params 哈希值。
-
如果保存新公司对你来说都是一样的,你可以跳过 if-else 块。但这可能就是问题所在。找出@company.save 是真还是假。
-
将
@company.save替换为@company.save!(用于测试),这样它会抛出一个错误,你就会知道哪里出了问题,可能是验证错误
标签: ruby-on-rails rspec