Rails"断言"未定义的方法' +'

时间:2015-11-30 00:57:14

标签: ruby-on-rails

我认为这是一个非常基本的问题......为什么assert方法不适用于这个简单的例子?

assert true

我收到以下错误消息:

NoMethodError Exception: undefined method `+' for nil:NilClass

这是在轨道4.2.1中。

编辑:这实际上是整个代码块。我所做的就是进入rails控制台并键入assert true。

1 个答案:

答案 0 :(得分:4)

虽然在运行Rake时,有很多事情需要了解RailsMinitestrake test背后的神奇之处,但基本上如果您在开始使用Rails之前尝试获得对 OOP Ruby 的一些基本理解,那么您将无法在控制台中执行此操作。

当您在Rails控制台中直接运行 assert true 时,这意味着您要在名为 assert的对象上调用main方法即可。但是, assert 方法在 assertions.rb 模块下的Assertions中定义(您可以通过运行gem open minitest进行检查或找到你的宝石所在的位置),它包含在 Test 类中。这意味着应该在assert类的实例上调用Test方法,这实际上是在Rails中运行测试时会发生的情况。 main只是Object类的一个实例,其中方法未定义。

但奇怪的是你从控制台得到的消息,它应该是

NoMethodError: undefined method 'assert' for main:Object