如何从辅助方法学习规范类型?

时间:2015-10-27 03:20:10

标签: ruby-on-rails rspec tdd integration-testing bdd

我在我的小网站上写了规格,我遇到了一个小问题。

我有一些规范帮助方法,例如:

  def is_logged_in?(spec = :feature)
    if spec == :feature
      page.has_selector?('#user-menu')
    else
      !session[:user_id].nil?
    end
  end

但我已经厌倦了传递"规范"论证,我认为有更好的解决方案,例如:if current_spec.type == :feature ...

有没有办法从辅助方法学习当前运行规范的类型?

2 个答案:

答案 0 :(得分:0)

您可以使用以下方法访问rspec测试的类型:

example.metadata[:type]
# => :controller # in case of a controller spec

请注意,example仅适用于示例组(例如describecontext块)。 example在示例(例如it块)中或在示例范围内运行的构造(例如beforelet等)中不可用。

答案 1 :(得分:0)

好的,我想出了如何将功能规格与其他规格区分开来:

SELECT * FROM my_table WHERE description LIKE '%[a-z0-9]%'

它很适合我的代码= - )