我正在编写的测试是检查是否可以删除作业。我以为我先检查链接本身是否存在:
describe "Deleting an assignment" do
before{ visit assignments_path }
it{ should have_selector('th', text: "Band Member") }
end
现在,当我加载页面本身时,它完美渲染而没有任何错误(还没有尝试过推入Heroku),但测试环境返回:
Failures:
1) Assignment pages Deleting an assignment
Failure/Error: before{ visit assignments_path }
ActionView::Template::Error:
undefined method `name' for nil:NilClass
导致错误的代码在我的赋值存根
中<td><%= assignment.user.name + " " + assignment.user.surname%></td>
我的分配控制器的索引操作只是:
def index
@assignments = Assignment.all
end
我看不到任何明显的东西,所以任何帮助都会受到赞赏。提前谢谢!
答案 0 :(得分:1)
事实证明,在测试环境中创建的用户的第一个实例是31而不是1.这是因为我在另一个测试套件中创建了一组30个用户,但之后删除了用户(因此用户1没有'存在)。我通过使用调用分配角色而不是硬编码我认为的ID来解决这个问题。
@assignment = Assignment.create(user_id: @user.id, role_id: @roleSecond.id)
答案 1 :(得分:0)
您是否使用不同的数据库进行测试和开发?如果是,请检查测试数据库中的所有作业是否都有用户。