2015-11-30 2 views
1

Я думаю, что это очень простой вопрос ... Почему метод assert работает в этом простом примере?Rails «assert» undefined method '+'

assert true 

Я получаю следующее сообщение об ошибке:

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

Это в рельсах 4.2.1.

Редактировать: Это буквально весь блок кода. Все, что я делаю, это ввести консоль рельсов и ввести assert true.

+1

Пожалуйста вывесить весь блок кода и полный стек ошибок трассировки. –

+1

Эта ошибка не имеет ничего общего с этой строкой кода. Можем ли мы увидеть остальное? – sevenseacat

+0

Пожалуйста, напишите больше информации, чтобы мы могли помочь. – Beengie

ответ

4

Хотя есть целая куча вещей, чтобы узнать о том, что магия за Rake, Rails, Minitest при запуске rake test, но в основном, если вы пытались получить некоторые фундаментальные понять из ООП и Руби, прежде чем попасть до Rails, вы не сделаете этого в своей консоли.

При запуске assert true непосредственно в консоли Rails, это означает, что вы звоните assert метод объекта под названием main. Однако метод assert определяется в assertions.rb под Assertions модуля (можно проверить, запустив gem open minitest или найти его там, где ваши драгоценные камни расположены), который входит в Test класса. Это означает, что метод assert должен вызываться в экземпляре класса Test, что на самом деле происходит, когда вы запускаете тесты в Rails. main - это всего лишь экземпляр класса Object, где метод не определен.

Но странно то сообщение, которое вы получили от консоли, она должна быть

NoMethodError: undefined method 'assert' for main:Object