我正在尝试深入测试,并且我遇到了让这个节目控制器通过的问题。我已经完成了我能想到的所有调整。
spec/controllers/contacts_controller_spec.rb
describe "GET #show do" do
before do
@contact = FactoryGirl.attributes_for(:contact)
end
it "assigns the requested contact to @contact" do
get :show, user_id: user.id, id: contact
expect(:contact).to be(contact)
end
end
这是工厂
FactoryGirl.define do
factory :contact do
full_name { Faker::Name.name}
email { Faker::Internet.email}
sex "male"
date_of_birth "19/02/1993"
phone_number { Faker::PhoneNumber.phone_number }
user { create :user }
address { Faker::Address.street_address }
country { Faker::Address.country }
state { Faker::Address.state }
city { Faker::Address.city }
postal_code { Faker::Address.postcode }
end
我的节目控制器
def show
@contact = Contact.find(params[:id])
end
答案 0 :(得分:1)
Factory Girl的function remove_msg_filter($msg, $msg_code, $this){
if(is_checkout()){
return "";
}
return $msg;
}
add_filter('woocommerce_coupon_message','remove_msg_filter',10,3);
返回下一个工厂序列的属性。它不会为您创建对象。因此,当您使用联系人发出get请求时,它可能返回nil,因为它只创建了属性而不是数据库条目。
因此,当您测试节目时,请先创建您的联系人,然后检查您的节目是否正在返回正确的节目。
attributes_for
如果您尝试将before do
@contact = FactoryGirl.create(:contact)
end
和user_id
作为获取请求参数传递,那么它将是这样的:
id