gpt4 book ai didi

ruby-on-rails - Rails 中的 stub 模型方法

转载 作者:太空宇宙 更新时间:2023-11-03 18:25:06 25 4
gpt4 key购买 nike

我正在为 cotroller 编写测试但没有成功。我的测试是:

describe VideosController do
describe 'index' do
it 'should select the index template for rendering' do
Video.stub(:video_exists?).with("KgfdlZuVz7I").and_return(true)
get :index, { :q => "KgfdlZuVz7I" }
response.should render_template('index')
end
end
end

这是 Controller 。

class VideosController < ApplicationController
def index
if params[:q]
params_hash = CGI::parse(params[:q])
if Video.video_exists?(params_hash.values[0][0])
video = Video.new :video_id => params_hash.values[0][0]
if video.save!
flash[:notification] = "Video found."
else
flash[:notification] = "Video found but not saved to database."
end
redirect_to root_path
else
flash[:notification] = "Video not found."
redirect_to root_path
end
end
end
end

测试未通过并引发消息:

VideosController index should select the index template for rendering Failure/Error: get :index, { :q => "KgfdlZuVz7I" } received :video_exists? with une xpected arguments expected: ("KgfdlZuVz7I") got: (no args) Please stub a default value first if message might be received with other args as well. # ./app/controllers/videos_controller.rb:5:in index'
# ./spec/controllers/videos_controller_spec.rb:12:in
block (3 levels) in '

认为我没有以正确的方式 stub 视频,因为我 stub 只是 video_exists?但不是新的和保存的。但我不知道如何解决这个问题,因为我是 TDD 和 Rspec 的新手。

最佳答案

作为建议 #1,您不应该像在测试中那样将“随机字符串”写出两次。这极易出现错误输入,并且很难通过视觉验证。改用这个:

rnd_id = "KgfdlZuVz7I"
Video.stub(:video_exists?).with(rnd_id).and_return(true)
get :index, { :q => rnd_id }

此外,我不确定 params_hash = CGI::parse(params[:q]) 应该做什么。为什么不像平常那​​样使用参数?

class VideosController < ApplicationController
def index
if params[:q]
if Video.video_exists?(params[:q])
video = Video.new :video_id => params[:q]
if video.save!
flash[:notification] = "Video found."
else
flash[:notification] = "Video found but not saved to database."
end
redirect_to root_path
else
flash[:notification] = "Video not found."
redirect_to root_path
end
end
end
end

关于ruby-on-rails - Rails 中的 stub 模型方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12481121/

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