gpt4 book ai didi

ruby-on-rails - 被 RSpec 惊呆了

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

对不起,但这开始感觉像是在踢自己的脑袋。我完全被 RSpec 搞糊涂了。一个接一个地观看视频,一个接一个地阅读教程,但我仍然停留在第一个方 block 上。

=== 这是我正在使用的

http://github.com/fudgestudios/bort/tree/master

=== 错误

F

1)
NoMethodError in 'bidding on an item should work'
You have a nil object when you didn't expect it!
You might have expected an instance of ActiveRecord::Base.
The error occurred while evaluating nil.new_record?
spec/controllers/auction_controller_spec.rb:16:
spec/controllers/auction_controller_spec.rb:6:

Finished in 0.067139 seconds

1 example, 1 failure

=== 这是我的 Controller Action

  def bid

@bid = Bid.new(params[:bid])
@bid.save

end

===这是我的测试

require File.dirname(__FILE__) + '/../spec_helper'
include ApplicationHelper
include UsersHelper
include AuthenticatedTestHelper

describe "bidding on an item" do
controller_name :items

before(:each) do
@user = mock_user
stub!(:current_user).and_return(@user)
end

it "should work" do
post 'bid', :bid => { :auction_id => 1, :user_id => @user.id, :point => 1 }
assigns[:bid].should be_new_record
end

end

=== spec_helper

http://github.com/fudgestudios/bort/tree/master/spec/spec_helper.rb

凌晨 3 点起床上类却一事无成,这真是令人沮丧。请理解。

最佳答案

在 before(:each) 中有一些倒退的东西。看到示例指定帖子应将计数增加 1,您正在处理真实记录并且根本没有理由 stub 。此外,在这一点上,由于只有一个示例,因此没有理由使用前 block 。我会这样做:

describe ItemsController, "bidding on an item" do
fixtures :users

it "should create a new Bid" do
login_as :quentin
lambda do
post 'bid', :bid => { :auction_id => 1, :user_id => @user.id, :point => 1 }
end.should change(Bid, :count).by(1)
end

end

我建议的一件事是,在您更好地理解它们之前,暂时非常精细地创建这些东西。从期望开始(帖子应该更改出价计数),运行规范并让失败消息引导您在规范或代码中添加您需要的任何其他内容。

关于ruby-on-rails - 被 RSpec 惊呆了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/404887/

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