• 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
  • 相关阅读:
    Ubuntu Dash 添加 Sublime Text 图标
    Ubuntu14.04修改DNS服务
    VNC viewer访问Ubuntu 14.04
    GPT和parted命令详解
    linux 标准IO缓冲机制探究
    浅谈无缓存I/O操作和标准I/O文件操作区别
    jsp利用request获取当前的链接地址
    eclipse jsp formatter
    spring bean
    ubuntu google-chrome-stable
  • 原文地址:https://www.cnblogs.com/goody9807/p/5481641.html
Copyright © 2020-2023  润新知