我只是想创建一个以对象作为参数的简单rspec方法。我可以做类似以下的事情:
def check_it(p)
before { visit p.full_path }
page.should have_title("sample title")
p.children.published.each do |pp|
check_it(pp)
end
end
到目前为止,我甚至没有想出可以避免使用此代码的地方:
undefined method `check_it'
错误,除非我把它与其他rails帮助器放在一起,此时我得到了
undefined method `before' for main:Object (NoMethodError)
非常感谢一些帮助起步。
答案 0 :(得分:1)
您可以在示例之外的rspec文件中的各个位置添加它。 E.g:
def check_it(p); puts p; end
describe 'foo' do
def check_it2(p); puts p; end
context 'bar' do
def check_it3(p); puts p; end
it 'does something' do
check_it 'hello'
check_it2 'world'
check_it3 'wide'
end
end
end
还有一些方法可以将其添加到rspec文件之外,例如:将它放在spec/support
和include
中的文件中,放入目标rspec文件中。
答案 1 :(得分:1)
不知道其他人是怎么做的,但我添加了一个目录到spec并称之为支持,因为spec_helper包含这一行:
Dir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f }
支持目录中的任何内容都将包含在每次运行中。
因此,您可以将此特定方法直接放在spec / support中的文件中,它可以调用,也可以将其包含在模块中,然后将该模块包含在您需要的位置。