我认为这是一个非常基本的问题......为什么assert
方法不适用于这个简单的例子?
assert true
我收到以下错误消息:
NoMethodError Exception: undefined method `+' for nil:NilClass
这是在轨道4.2.1中。
编辑:这实际上是整个代码块。我所做的就是进入rails控制台并键入assert true。
答案 0 :(得分:4)
虽然在运行Rake
时,有很多事情需要了解Rails
,Minitest
,rake 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