Sou*_*ikj 4 rspec ruby-on-rails
我的应用程序有两个模型:用户和员工,他们的关系是用户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
Run Code Online (Sandbox Code Playgroud)
我的结果如下:
....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
请有人帮我解决这个问题吗?谢谢
我认为问题是你正在使用mock_model,如果你在模型上调用一个你没有明确创建期望的方法,它会抛出错误.在这种情况下,您可以使用stub_model创建员工,因为您不对实际对模型进行的调用执行任何检查.
describe "GET 'edit'" do
it "should get user/edit with log in" do
log_in(@user)
employee = stub_model(Employee, :id=>1, :user_id=>@user.id)
get :edit, :id=>employee
response.should be_success
end
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7316 次 |
| 最近记录: |