RSpec显示操作视图错误,但页面在本地主机上完美呈现

时间:2012-07-05 11:16:57

标签: ruby-on-rails ruby-on-rails-3 rspec

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

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

我看不到任何明显的东西,所以任何帮助都会受到赞赏。提前谢谢!

2 个答案:

答案 0 :(得分:1)

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

@assignment = Assignment.create(user_id: @user.id, role_id: @roleSecond.id)

答案 1 :(得分:0)

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