使用Capybara和Rspec,如何禁用config:all用于特定测试

时间:2015-10-29 12:15:05

标签: rspec capybara automated-tests

我没有那么少的测试,所以为了节省时间,我使用以下配置跳过登录过程:

config.before :all, type: :feature do
    stub_login
    visit "/auth=admin:123456&origin=http://#{Capybara.current_session.server.host}:#{Capybara.current_session.server.port}"
end

但是现在我必须测试登录屏幕,我在泡菜中:任何尝试进入登录屏幕(访问或注销)将导致登录页面,因为存根返回日志的相关数据在州。

我想知道如何取消此特定配置?有没有办法标记它,以便特定的测试(或规范)可以忽略它?

思考&提示?感谢

1 个答案:

答案 0 :(得分:0)

最终我拆分了“config.before:all”:

config.before :all, type: :logged do
    stub_login
end

config.before :all, type: :feature do
    visit '.......'
end

和来自的测试:

describe 'some tests with login', type: [:feature, :logged] do
.....

为:

describe 'login screen tests', type: :feature do
.....

另一个更好的解决方案是:

config.before :all do |spec|

    not_logged = spec.class.metadata[:not_logged]
    if not_logged
        ......not logged script
    else
       ......logged script 
    end

和规范:

describe 'login view', type: :feature, :not_logged=> true do
    .....
end