加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – RSpec错误:模拟“Employee_1”收到意外消息:

发布时间:2020-12-17 03:58:47 所属栏目:百科 来源:网络整理
导读:我的应用程序有两个模型:用户和员工,他们的关系是用户has_many员工. 当我尝试为员工控制器编写Rspec测试用例时: describe "GET 'edit'" do it "should get user/edit with log in" do log_in(@user) employee = mock_model(Employee,:id=1,:user_id=@user.
我的应用程序有两个模型:用户和员工,他们的关系是用户has_many员工.

当我尝试为员工控制器编写Rspec测试用例时:

describe "GET 'edit'" do
  it "should get user/edit with log in" do
    log_in(@user)
    employee = mock_model(Employee,:id=>1,:user_id=>@user.id)
    get :edit,:id=>employee
    response.should be_success
  end
end

我的结果如下:

....F

Failures:

  1) EmployeesController GET 'edit' should get user/edit with log in
     Failure/Error: get :edit,:id=>employee
       Mock "Employee_1" received unexpected message :to_ary with (no args)
     # C:in `find'
     # ./app/controllers/employees_controller.rb:41:in `edit'
     # ./spec/controllers/employees_controller_spec.rb:51:in `block (3 levels) in '

Finished in 4.31 seconds
5 examples,1 failure

请有人帮我解决这个问题吗?谢谢

解决方法

Rails能够从真实的模型实例推断ID,这是如何工作的:

@employee = Employee.create
get :edit,:id => @employee

这不适用于mock_model,原因我不清楚.您只需明确传入ID:

employee = mock_model(Employee,:id => 1,:user_id=>@user.id)
  get :edit,:id => employee.id # or just :id => 1

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读