Ruby   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ruby-on-rails – 使用Rspec测试“Post create”大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试用Rspec测试“Post create”动作.代码如下:
def valid_attributes
     {
    :zone => Flymgr::Zone.new(:countries => Flymgr::ZoneCountry.first,:name => 'USA',:description => 'USA Flight',:zipcodes => ''),:price => '100.00',:class => 'first',}
   end

   def valid_session
     {}
   end

   before(:each) do
       @request.env["devise.mapping"] = Devise.mappings[:admin]
       admin = FactoryGirl.create(:admin)
       sign_in admin                           
      end

describe "POST create" do
     describe "with valid params" do
       it "creates a new Flymgr::rule" do
         expect {
           post :create,{:Flymgr_rule => valid_attributes}
         }.to change(Flymgr::rule,:count).by@R_696_11269@
       end

表单的必需属性之一是“区域”,这是一个下拉框,下拉列表的选项是使用不同的表单创建的.我不知道如何使用Rspec创建表单条目.如您所见,我试图从不同的控制器Flymgr :: Zone.new调用一个方法.我不认为这是有效的,它打破了我的验.

谁能建议最好的方法来做到这一点?也许@R_957_10675@用FactoryGirl来创建区域和规则条目?

解决方法

你的请求参数hash有一个对象作为值:zone,当你发布它只是’to_s’-ed,这不太可能你想要的.

通常,最佳做法是使用factory girl构建对象,并使用attributes_for策略为post请求参数化其属性:
What is the proper way to test ‘create’ controller actions?

您的问题是建议该关联是belongs_to,因此您只需要发布一个ID.请注意,目前,FactoryGirl不会为关联创建任何属性.如果规则的工厂定义负责区域关联,则可以使用此解决方法:

FactoryGirl.build(:flymgr_rulE).attributes

还包括zone_id但是,您需要排除不需要的参数.
(“id”,“created_at”,“updated_at”等).

因此,您可能最好在您在有效的帖子请求中看到它的方式显式插入区域的参数哈希信息.

在factorygirl属性和关联上阅读此主题:
https://github.com/thoughtbot/factory_girl/issues/359

大佬总结

以上是大佬教程为你收集整理的ruby-on-rails – 使用Rspec测试“Post create”全部内容,希望文章能够帮你解决ruby-on-rails – 使用Rspec测试“Post create”所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。