Rails 5(minitest)处理测试中与生产和开发不同的值

时间:2016-10-27 17:25:33

标签: unit-testing ruby-on-rails-5

我有一个rails 5.0.0.1应用程序,它有书籍和作者的模型。 在生产和开发中,页面按预期显示,显示book.author.name 但是,在我的测试中,book.author是有效的并且正如预期的那样,但是book.author.name会产生错误“ActionView :: Template :: Error:undefined method`name'for nil:NilClass”

使用byebug我发现该书的author_id设置为459301548但没有该作者的作者。

minitest如何处理不同的事情,以便错误只发生在测试环境中?

我尝试过移动方法并尝试不同的方法来填充@books以便在我的@ books中使用。但唯一可行的方法是删除对book.author.name

的引用

错误仅在未登录时发生,但我需要检查我的测试以确保在其他情况下我没有得到它。

1 个答案:

答案 0 :(得分:0)

我不知道为什么会有所不同,但是当我在控制器中更改变量赋值时:

@books = Book.paginate(...)

为:

@books = Book.all.paginate(...)

错误消失了。 这些页面似乎仍然以任何方式显示开发和生产中的正确信息。