rspec中的shared_examples与shared_context有什么不同

What is the real difference between shared_examples and shared_context ?

My observations :

  1. I can test same things using both (i.e. with shared_examples or shared_context)

  2. But some of my other tests fails if I use later one.

Observation #1 :

I compared shared_examples and shared_context per documentation onhttps://www.relishapp.com/

Syntactical differences are :

  • shared_context to define a block that will be evaluated in the context of example groups by implicitly matching metadata

Example :

shared_context "shared stuff", :a => :b do ... end
  • The way these are included or called from a test file

shared_examples

include_examples "name"      # include the examples in the current context it_behaves_like "name" # include the examples in a nested context it_should_behave_like "name" # include the examples in a nested context

shared_context

include_context "shared stuff"

Observation #2

I have a test case

shared_context 'limit_articles' do |factory_name| before do @account = create(:account) end it 'should restrict 3rd article' do create_list(factory_name, 3, account: @account) article4 = build(factory_name, account: @account) article4.should be_invalid end it 'should allow 1st article' do ... end it 'should allow 2nd article' do ... end end

And include the context in a spec file which already has one shared_context included, then the existing one fails. But I change the order then all my test passes

Fails

include_context 'existing_shared_context'

include_context 'limit_articles'

Also if I replace the shared_context with shared_examples and accordingly include it in test case.

Passes

include_context 'existing_shared_context'

it_behaves_like 'limit_articles'

原文:http://stackoverflow.com/questions/21117123/rspec-shared-examples-vs-shared-context
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值