Ruby on rails 有没有办法从rspec代码的每一行中删除主题?
我想删除每行的主题,这让我的规范太冗长了 我的模型具有以下代码:- 描述“#克隆#u以便#u重新提交”do 结束大卫·切里姆斯基(David Chelimsky)描述道,所以你想摆脱它是对的。但是,您的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
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