gpt4 book ai didi

ruby-on-rails - Rspec 套件在 OmniAuth 模拟验证哈希上失败

转载 作者:数据小太阳 更新时间:2023-10-29 08:38:31 28 4
gpt4 key购买 nike

我的 Rspec 测试都单独通过,但整个套件都失败了。

我已将问题缩小到使用 spec/support/devise.rb 中描述的模拟 omniauth 哈希:

OmniAuth.config.test_mode = true

OmniAuth.config.mock_auth[:facebook] = {
"uid" => "1111",
"provider" => "facebook",
"credentials" => {
"token" => "token",
"secret" => "secret"
},
"extra" => {
"raw_info" => {
"name" => "Adam Waite",
"username" => "adamjwaite",
"email" => "adam@adam.com"
}
}
}

OmniAuth.config.add_mock(:facebook, OmniAuth.config.mock_auth[:facebook])

当我在测试失败之前检查 OmniAuth.config.mock_auth[:facebook] 时(使用 pry ),如果在套件中运行,它会返回 :invalid_credentials。如果我在单个测试文件中运行相同的测试,它会显示为显示的样子。

这是我的 UsersController 中注册方法中的失败测试:

describe "GET :new" do
describe "as an unauthenticated user with a facebook omniauth session" do
before do
session[:omniauth_facebook] = OmniAuth.config.mock_auth[:facebook]
get :new
end
specify { assigns[:registering_with_facebook].should == true }
specify { assigns[:registering_with_twitter].should == false }
specify { response.should be_success }
end
end

还值得一提的是,该应用程序也能正常运行。我只想让套件通过。

有没有人对正在发生的事情有所了解?

最佳答案

每当一个测试单独工作,但与其他测试一起失败时,您就会遇到测试顺序问题。一些较早的测试正在改变全局状态并保持这种状态,这对该测试产生了负面影响。

我创建了一个小工具来帮助我查找我自己套件中的排序问题:rspec-search-and-destroy .它将获取您的测试套件并将其一分为二,直到找到设置错误全局状态的测试为止。当然,您可以自己手动完成此操作,但希望该工具可以自动完成这些苦差事。

找到较早的测试后,您需要检查它以确定正在设置什么全局状态,以及如何正确地沙箱将更改更改为仅需要它的测试。

关于ruby-on-rails - Rspec 套件在 OmniAuth 模拟验证哈希上失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19560007/

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