Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 有没有办法从rspec代码的每一行中删除主题?_Ruby On Rails_Rspec_Ruby On Rails 3.2 - Fatal编程技术网

Ruby on rails 有没有办法从rspec代码的每一行中删除主题?

Ruby on rails 有没有办法从rspec代码的每一行中删除主题?,ruby-on-rails,rspec,ruby-on-rails-3.2,Ruby On Rails,Rspec,Ruby On Rails 3.2,我想删除每行的主题,这让我的规范太冗长了 我的模型具有以下代码:- 描述“#克隆#u以便#u重新提交”do 结束大卫·切里姆斯基(David Chelimsky)描述道,所以你想摆脱它是对的。但是,您的it块做得太多了,这将极大地影响规范的可读性-为了使其更具可读性,我建议您执行以下操作: describe Order do describe '#clone_for_resubmit' do before do # @user = ... # @order_i

我想删除每行的主题,这让我的规范太冗长了

我的模型具有以下代码:-

描述“#克隆#u以便#u重新提交”do

结束

大卫·切里姆斯基(David Chelimsky)描述道,所以你想摆脱它是对的。但是,您的
it
块做得太多了,这将极大地影响规范的可读性-为了使其更具可读性,我建议您执行以下操作:

describe Order do
  describe '#clone_for_resubmit' do
    before do
      # @user = ...
      # @order_item1 = ...          
      # @cart_group = ...          
      @new_item = @order_item1.clone_for_resubmit(:cart_group         => @cart_group,
                                                  :cloned_collections => { },                                                      
                                                  :order              => @cart_group.order,
                                                  :message            => "this is just for testing purpose",
                                                  :receiver           => "example@example.com",
                                                  :sender             =>"ragarwal@kreeti.com" ) }

      @gift = FactoryGirl.create(:gift, :order_item_id => @order_item1.id, :user => @user)
    end

    it 'should use the correct cart group' do
      @new_item.cart_group.should == @cart_group
    end

    it 'should use the correct collection name' do
      @new_item.collection.name.should == @order_item1.collection.name
    end

    it 'should use the correct book title' do
      # etc...
    end
  end
end

这样,您不仅可以获得更具可读性的规格,而且故障也会更严重-如果其中一个出现问题,其他的还是绿色的。

嘿,谢谢您的回复,有没有办法从每个it块中删除@new\u项?在“subject”的帮助下,我想在每个块中再次编写subject会使它变得冗长,编写这种规范而不重复变量的最短方法应该是什么/subject
subject
使用一个参数,允许您指定除“subject”之外的名称,这样您就可以有类似于
subject(:item)的名称{new_item};..item.cart_group.should==@cart_group…#etc
。但是请记住,“最短的方式”通常不是最容易阅读的方式!哦,非常感谢omnikron的帮助:)这就是我想知道的
describe Order do
  describe '#clone_for_resubmit' do
    before do
      # @user = ...
      # @order_item1 = ...          
      # @cart_group = ...          
      @new_item = @order_item1.clone_for_resubmit(:cart_group         => @cart_group,
                                                  :cloned_collections => { },                                                      
                                                  :order              => @cart_group.order,
                                                  :message            => "this is just for testing purpose",
                                                  :receiver           => "example@example.com",
                                                  :sender             =>"ragarwal@kreeti.com" ) }

      @gift = FactoryGirl.create(:gift, :order_item_id => @order_item1.id, :user => @user)
    end

    it 'should use the correct cart group' do
      @new_item.cart_group.should == @cart_group
    end

    it 'should use the correct collection name' do
      @new_item.collection.name.should == @order_item1.collection.name
    end

    it 'should use the correct book title' do
      # etc...
    end
  end
end