gpt4 book ai didi

ruby-on-rails - 使用 RSpec 和 Factory Girl 测试设计

转载 作者:行者123 更新时间:2023-12-04 07:36:49 25 4
gpt4 key购买 nike

编辑 阅读我对这个问题的评论

我对rails很陌生,所以请多多包涵。
我一直在尝试使用 factory girl 和 rspec 为 Devise 配置测试。这花了我 2 个小时的最佳时间,并且搜索了一半的互联网无济于事。即使似乎是我的问题有很多线程,我只是无法弄清楚。

这就是我的/spec 文件的样子。

GET Home Gives the correct status code
Failure/Error: sign_in user
NoMethodError:
undefined method `sign_in' for #<RSpec::Core::ExampleGroup::Nested_2:0x00000106f32558>
# ./spec/models/user_spec.rb:6:in `block (2 levels) in <top (required)>

这是我得到的错误消息,试图实现以下测试:
user_spec.rb:
require 'spec_helper'

describe "GET Home" do
before do

##I have tried all sorts of things here. I have also tried to define a module in devise.rb (see note below*), and then call that module here instead of the 2 lines below. But I get the same error, no local variable or undefined method for ...

user = FactoryGirl.create(:user)
sign_in user
end

describe "GET /Home"
it "Gives the correct status code" do
get root_path
response.status.should be(200)
end


end
in spec/factories/users.rb:
FactoryGirl.define do 
factory :user do
name "Christoffer"
email "test@test2.com"
password "testtest"
password_confirmation "testtest"
end
end

以下行包含在 spec_helpers.rb
config.include FactoryGirl::Syntax::Methods
config.include Devise::TestHelpers, :type => :controller

现在,通过这样做,我得到了上面的错误。谁能解释我在这里做错了什么?这可能是非常明显的事情,因为我对 Rails 的方式并没有那么好排练。

*注意(模块我试图在 devise.rb 中定义并插入 before do ):
module ValidUserRequestHelper
# Define a method which signs in as a valid user.
def sign_in_as_a_valid_user_nommels
# ASk factory girl to generate a valid user for us.
@user ||= FactoryGirl.create :user

# We action the login request using the parameters before we begin.
# The login requests will match these to the user we just created in the factory, and authenticate us.
post_via_redirect user_session_path, 'user[email]' => @user.email, 'user[password]' => @user.password
end
end

最佳答案

'spec/requests' 的目的是用于集成测试。您将从用户的角度测试您的应用程序的功能(即填写某些信息,然后单击按钮,然后如果某些输入有效或无效,则应该发生某事)。 Spec/models 和 spec/controllers 通常用于单元测试,您可以在其中测试应用程序的较小部分(即,如果传递给用户模型的密码和 password_confirmation 参数不匹配会发生什么情况)

关于ruby-on-rails - 使用 RSpec 和 Factory Girl 测试设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22761106/

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