【发布时间】:2021-12-06 04:59:29
【问题描述】:
请原谅我的生疏,很长时间以来第一次接触 Rails 和这个项目。
Ruby 版本: 2.5.0
Rails 版本: 5.1.7
RSpec 版本: 3.9.3
FactoryBot 版本: 6.2.0
这是我的 scripts_controller_spec.rb 文件,其中包含模型创建和相关测试:
require 'rails_helper'
describe ScriptsController, type: :controller do
userID_1 = User.create!(
email: 'ueferfrfrf@u1.com',
password: 'useruser',
password_confirmation: 'useruser'
)
script1 = Script.create!(
name: 'YWoodcutter',
skill: 'Woodcutting',
bot_for: 'TRiBot',
game_for: 'Oldschool Runescape 07',
user_id: userID_1.id
)
script1.save
describe "GET #index" do
it "assigns @scripts" do
get :index
p script1
expect(assigns(:scripts)).to eq([script1])
end
end
运行测试时,上面的打印行按预期输出:
#
但是,我得到了这个测试失败:
失败:
ScriptsController GET #index 分配@scripts 失败/错误:expect(assigns(:scripts)).to eq([script1])
预期: [#
(使用 == 比较)
我的scripts_controller.rb 索引函数如下所示:
class ScriptsController < ApplicationController
def index
@scripts = Script.order(:created_at)
end
如果您需要更多信息,请告诉我,感谢您的帮助!
【问题讨论】:
-
在哪里创建 script1 是必不可少的。请使用相关规范代码进行更新。
-
@razvans script1 创建代码在同一个 scripts_controller_spec.rb 文件中,就在测试的上方。
-
加上带有索引操作、任何过滤器等的控制器代码
-
然后把整个spec文件放进去。
-
@razvans 已更新。除了一些必需的行和空测试(我省略了)之外,script_controller_spec.rb 文件中没有更多内容。如果您想查看完整的 scripts_controller 文件,那么展示它的最佳方式是什么?只需将代码放在问题中,或者 GitHub 链接会更干净吗?
标签: ruby-on-rails rspec