gpt4 book ai didi

ruby-on-rails - 尝试使用 rspec 和 Capybara 测试 omniauth,失败

转载 作者:行者123 更新时间:2023-12-04 06:35:31 28 4
gpt4 key购买 nike

使用 Rails 3.2 和最新的 Rspec 和 Capybara,这意味着我的 Capybara 规范在 spec/features 中.

我对 Rails 和测试真的很陌生,但我想习惯测试。我最终在测试之前实现了 OAuth。我终于让它工作了,现在我正在尝试追溯测试它(所以我至少知道它将来是否会损坏)。我正在尝试关注 this tutorial ,但事情不奏效。这是我所做的:

1) 创建spec/support/integration_spec_helper.rb与:


module IntegrationSpecHelper
def login_with_oauth(service = :google)
visit "/auth/#{service}"
end
end

2) 已修改 spec/spec_helper包括 config.include IntegrationSpecHelper, :type => :requestRspec.configure里面阻止。

3) 创建spec/features/omniauth_spec.rb与:

require 'spec_helper'
feature 'testing oauth' do
scenario 'should create a new tiger' do
login_with_oauth
visit new_tiger_path

fill_in 'tiger_name', :with => 'Charlie'
fill_in 'tiger_blood', :with => 'yes'

click_on 'Create Tiger'

page.should have_content("Thanks! You are a winner!")
end
end

当然它会失败(我的应用程序中没有老虎)但我希望它在 visit new_tiger_path 上失败.相反,运行规范,我得到:


1) testing oauth should create a new tiger
Failure/Error: login_with_oauth
NameError:
undefined local variable or method `login_with_oauth' for #<RSpec::Core::ExampleGroup::Nested_3:0x83355d8>
# ./spec/features/omniauth_spec.rb:4:in `block (2 levels) in <top (required)>'

所以基本上,它说没有这样的东西 login_with_oauth .这一定是一个非常基本的错误,因为出于某种原因没有包含我的代码。

我没有使用 spork(试图让事情简单化)。

知道问题出在哪里吗?提前致谢!

最佳答案

如果您尝试使用来自 google 的 oauth,您需要更改:

def login_with_oauth(service = :google)

到:

def login_with_oauth(service = :google_oauth2)

:google_oauth2 也应该是 OmniAuth.config.add_mock 的第一个参数,即:

OmniAuth.config.add_mock(
:google_oauth2,
{
:info => {
:email => 'test@some_test_domain.com',
:name=>'Test User'
}
})

不要忘记更改:

config.include(IntegrationSpecHelper, :type => :request)

到:

config.include(IntegrationSpecHelper, :type => :feature)在 RSpec.configure block 中,正如 Christoph 上面提到的那样。

关于ruby-on-rails - 尝试使用 rspec 和 Capybara 测试 omniauth,失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13805604/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com