Михаил обнови решението на 16.11.2016 01:16 (преди над 8 години)
Това не ми харесва много, че ми се наложи да го правя, но смятам, че е хубаво да тествам сравнението за равенство, а ако използвам expect(something == something) Рубокопа се оплаква, че сравнявам нещо със същото нещо и не ми дава да си кача решението. По тоя начин го забаламосвам.
И на мен не ми харесва изобщо. Достатъчно ще е да провериш дали Version.new('0') == Version.new
, или може да го тестваш направо през to_s
Относно тестването на инициализации имам въпрос. Принципно инициализацията е нещо, което не връща някакъв резултат и няма външно от обекта действие. Как е редно да се тества? В случая аз ползвам други методи като to_s в случая с Version и to_a в случая с Range за да мога да видя дали инициализацията е коректна. Обаче по тоя начин обвързвам теста за един метод с другия и това не ме кефи много.
За инициализацията това е ОК. Няма как да разбереш по друг начин, без да гледаш имплементационни детайли.
Доста хитро :)
Използвай public_send
вместо send
. Имай него като подразбиращото се нещо за използване
Ако напишеш expect(Version.new('0')).to be <= Version.new('0')
ще е много по-прегледно, а и rubocop-а няма да се усети.
Ооо, не се бях сетил за това. Яко решение на проблема! Мерси!
Не използвай before(:all)
, а само before
(еквивалентно е на before(:each)
). В този случай, ако нещо "счупи" обекта, той ще продължи да бъде счупен и в останалите тестове - тоест ще "протече" някакво състояние, което е лошо.
А още по-добре, направи го с let
.
Относно тестването на инициализации имам въпрос. Принципно инициализацията е нещо, което не връща някакъв резултат и няма външно от обекта действие. Как е редно да се тества? В случая аз ползвам други методи като to_s в случая с Version и to_a в случая с Range за да мога да видя дали инициализацията е коректна. Обаче по тоя начин обвързвам теста за един метод с другия и това не ме кефи много.
За инициализацията това е ОК. Няма как да разбереш по друг начин, без да гледаш имплементационни детайли.
Доста хитро :)