RSpec:controller => action =>结果=>上下文规范

时间:2015-04-16 07:58:22

标签: ruby-on-rails rspec rspec-rails specifications

关于RSpec的一个非常快速的问题 - 我希望具有以下规范层次结构:

  • 控制器 - 每个文件一个,例如SearchController
  • 操作 - 每个控制器执行多个操作,每个操作都单独指定,例如searchsuggest
  • 结果 - 根据从控制器收到的结果的含义分组 - 即如果我们重新指定search,那么我想根据查询隐含的搜索结果对测试用例进行分组, ie"搜索文章","搜索用户","搜索产品"
  • 上下文 - 在几个不同的上下文中可以达到相同的结果 - 即在搜索控制器示例中,即"搜索文章"使用各种搜索词组

对于英文规范转储,对于搜索控制器示例,我想构建类似下面的措辞:

  • SearchController
    • 建议
      • 返回文章
        • 按文章文字
        • 按文章标题
      • 返回用户
        • 按用户名
        • 按用户年龄

目前我的代码如下:

RSpec.describe SearchController do
  describe 'suggest' do
    it 'returns articles by article text' do
      get :suggest, text: 'some text'
      expect(response.body).to ...
    end
    it 'returns articles by article header' do
      ...
    end
    it 'returns users by user name' do
      ...
    end
    it 'returns users by user age' do
      ...
    end
  end
end

它有点有效,但有没有办法通过引入下一级分组和语义内容来改进它,例如contextit或类似的东西?

1 个答案:

答案 0 :(得分:1)

稍微不同的结构应该更容易映射到rspec语法:

  • SearchController
    • 建议
      • 物品
        • 按文字查找
        • 按标题
        • 查找
      • 用户
        • 按用户名
        • 查找
        • 按年龄查找

Spec可能如下所示:

describe SearchController do
  describe 'suggest' do
    context 'articles' do
      it 'finds by name' do
        ...
      end
      it 'finds by text' do
        ...
      end
    end 
  end
end