嵌套控制器的黄瓜步骤失败

时间:2012-09-27 20:11:18

标签: cucumber ruby-on-rails-3.2 minitest

我正在尝试使用BDD在我的Rails 3站点中实现一项功能:

Feature: Patents Administration

  Scenario: Patents index
    Given I am on the admin patents page
    Then I should see "Patents"
    And the title should be "Wavetronix - Patents"

以下是相应的步骤:

Given /^I am on the (.*?) page$/ do |text|
  visit eval("#{text.downcase.gsub(/\s/, '_')}_path(locale: 'en')")
end

Then /^I should see "(.*?)"$/ do |text|
  page.must_have_selector('h1', text: text)
end

Then /^the title should be "(.*?)"$/ do |text|
  page.must_have_selector('title', text: text)
end

第一步失败了:我需要实现Admin :: PatentsController:

module Admin
  class PatentsController < BaseController
    before_filter :find_patent

    def index

    end

  private

    def find_patent
      @patent = Patent.find(params[:id]) if params[:id]
    end
  end
end

因为它继承自Admin :: BaseController,它有自己的索引操作和视图:

module Admin
  class BaseController < ApplicationController

    filter_access_to :index

    def index
    end

  end
end

Admin :: PatentsController也继承了该操作和视图。当我通过显式定义PatentsController的索引操作和视图来覆盖BaseController实现时,我可以查看浏览器中的更改 - 它获取新的索引操作和视图 - 但是Cucumber步骤失败因为它似乎仍在查看BaseController索引操作和视图。

created a gist有更多代码可供参考。

这是一个错误吗?有没有更好的方法来测试这个?

1 个答案:

答案 0 :(得分:0)

Bonehead:我没有考虑现有的身份验证机制,因为测试请求未经过身份验证,因此会重定向。