О сообщении
Это сообщение, которое не является ошибкой, отображается, когда утверждение не выполняется, но MiniTest не может найти разницу между объектами.
Проверьте этот метод.
diff
запускает #inspect
для двух объектов и запускает для них инструмент сравнения. Если различий нет, отображается это сообщение.
В принципе, вы бы хотели, чтобы два объекта, которые не равны, имели разные выходные данные при проверке. Однако это не высечено на камне, и некоторые классы в стандартных библиотеках ruby не соответствуют этому свойству, например Time
. Когда дело доходит до ваших собственных классов, возможно, вы написали собственный метод #inspect
?
Что касается Time
, проверка показывает только секунды, а не дроби, но равенство рассматривает дроби, поэтому два объекта времени могут не быть равными, но все же выглядеть одинаково при проверке.
Что касается Array
, если включенные в него объекты могут не совпадать, но выглядеть одинаково при проверке, это приведет к отображению сообщения.
Если вы получаете это сообщение, несмотря на то, что выходные данные проверки отличаются, значит, что-то не так с инструментом сравнения. MiniTest пытается сделать некоторые обоснованные предположения о том, какой инструмент сравнения использовать. Вы можете проверить выбранный инструмент сравнения, напечатав MiniTest::Assertions.diff
.
О равенстве объектов
Если реальная проблема заключается в том, что ваши объекты не равны, когда вы ожидаете, что они будут равны, вы должны посмотреть, как метод ==
определен в соответствующих классах. Реализация по умолчанию просматривает идентификаторы объектов, присвоенные каждому объекту при создании экземпляра, что, вероятно, не то, что вам нужно, если, например, вы имеете дело с объектами, которые представляют строки базы данных.
person
Jesper
schedule
24.02.2015
result = @service.run
result.must_equal(@users.get_single(1))
Примечание. Я также пробовал assert_equal, и происходит то же самое. - person Fabian Silva   schedule 24.02.2015