gpt4 book ai didi

ruby-on-rails - 测试 401 错误且未找到记录时 Rspec 挂起

转载 作者:行者123 更新时间:2023-12-02 21:29:29 24 4
gpt4 key购买 nike

我正在运行rails-api 的Rails 4 API 上使用RSpec 运行集成测试。我想看看如果将错误的电子邮件地址传递给登录 Controller ,我会得到 401 返回。

这是我的期望

it "should throw invalid login for user with invalid email" do
post "/api/v1/users/sign_in", uname: "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="16616479787149737b777f7a5661647978713875797b" rel="noreferrer noopener nofollow">[email protected]</a>", password: "12234"

expect(response).to eq(401)

end

在我的 Controller 中,我有:

def create
@user = User.find_by_email(params[:uname])
if(@user && @user.valid_password?(params[:password]))
....
end

这在浏览器中运行良好,我得到了 401 返回。但是当我运行 rspec 时,它只会挂起并且永远不会报告失败或通过,只是坐在那里没有错误。问题的症结似乎是 if(@user) 部分。如果我删除它,那么测试至少会运行。

我检查了 log/test.log,可以在日志中看到 Completed 401 Unauthorized in 14ms (Views: 0.2ms | ActiveRecord: 2.8ms)

更新

澄清一下,这是一个请求规范。我正在测试 API 的使用者是否会在电子邮件无效的情况下收到 401 响应。

最佳答案

尝试

 expect(response.response_code).to eq 401

 expect(response.status).to eq 401

关于ruby-on-rails - 测试 401 错误且未找到记录时 Rspec 挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22676459/

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