0

我正在编写的测试是检查我是否可以删除作业。我想我会先检查链接本身是否存在:

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

我看不到任何明显的东西,因此将不胜感激。先感谢您!

4

2 回答 2

1

事实证明,在测试环境中创建的用户的第一个实例是 31 而不是 1。这是因为我在另一个测试套件中创建了一组 30 个用户,但之后删除了用户(因此用户 1 不存在) . 我通过使用调用而不是硬编码我认为是 ID 来分配角色来解决这个问题。

@assignment = Assignment.create(user_id: @user.id, role_id: @roleSecond.id)
于 2012-07-05T14:31:45.157 回答
0

您是否使用不同的数据库进行测试和开发?如果是,请检查您的测试数据库中的所有作业是否都有用户。

于 2012-07-05T11:47:46.033 回答