gpt4 book ai didi

ruby-on-rails - Rails 测试规范不会构建我的用户模型

转载 作者:行者123 更新时间:2023-11-28 21:31:25 25 4
gpt4 key购买 nike

Rails 测试有太多事件部分,有时很难调试失败的测试。

作为一个恰当的例子,我正在尝试使用 zeus、guard、rspec、capybara、Poltergeist、PhantomJS 和 FactoryGirl 来简单地构建一个用户工厂。

我遇到了以下错误信息:

spec/models/user.rb

require 'spec_helper'

describe User do
describe 'Factories' do
it { expect(build :user).to be_valid }
end
end

spec/factories/users.rb

FactoryGirl.define do

factory :user do
sequence(:email) { |n| Forgery(:internet).email_address }
sequence(:company) { |n| Forgery(:name).company_name }
password "password"
password_confirmation "password"
end
end

现在我有一个在以下行失败的请求规范,这是开始时的设置:

let!(:user) { login_user }

失败是这样的:

 Failure/Error: let!(:user) { login_user }
NoMethodError:
undefined method `last_logged_in_at=' for #<User:0x007fe60aca95e8>
# ./app/models/user.rb:136:in `set_login_time'
# ./app/controllers/sessions_controller.rb:24:in `create'
# ./spec/support/login_macros.rb:7:in `login_user'
# ./spec/requests/app_integration_spec.rb:5:in `block (2 levels) in <top (required)>'
# ./custom_plan.rb:12:in `spec'
# -e:1:in `<main>'

所以问题似乎是因为 User 不是一个真实的对象,所以没有 last_logged_in_at 这样的属性。所以我应该在某个地方 mock 它。我试着把它放在工厂代码中:

before(:build) do |u|
u.stub!(:read_attribute).with(:last_logged_in_at).and_return(Time.now)
end

错误仍然存​​在。测试根本找不到这个属性。请记住此代码在浏览器中完美运行。我不在我的联盟中。我哪里错了?

最佳答案

您的测试数据库架构是最新的吗?

rake db:test:prepare

关于ruby-on-rails - Rails 测试规范不会构建我的用户模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20641216/

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