isinstance(o, str)
возвратится True
, если o
будет str
или будет иметь тип, который наследовался от str
.
type(o) is str
возвратится True
, если и только если o
str. Это возвратится False
, если o
будет иметь тип, который наследовался от [1 110].
Есть ли консенсус ? Я бы сказал нет. В сообществе есть сильные голоса в пользу использования TDD / BDD, но даже тогда это не универсально. Фреймворк, вероятно, менее важен, чем применение этой практики в первую очередь.
Я считаю, что minitest - это замена версии 1.9 для Test :: Unit, которая существует только как оболочка для новой библиотеки для обратной совместимости. Я предполагаю, что выбор пути, специфичного для minitest, будет более дальновидным.
RSpec - это несколько другой подход: менее явно пропитанный «традиционными» фреймворками, основанными на xUnit. Стоит потратить некоторое время, чтобы узнать, предпочитаете ли вы это.
Также есть Shoulda . хотя я не знаю, насколько он протестирован на 1.9: это скорее оболочка / расширение для Test :: Unit, так что, вероятно, он сработает.
Конечно, веселье на этом не заканчивается: как только вы Я выбрал тестовый фреймворк, и вам понадобится какой-нибудь имитатор. Или замена фикстуры данных.
Во всех случаях я бы сказал, что любая структура, для которой вы можете найти доказательства регулярных обновлений, открытого, заполненного сообщества и API, который вы не ненавидите, подойдет. Маловероятно, что вас позже расстреляют за то, что вы сделали любой выбор.
Я использую Rspec около года. Я перешел с Test :: Unit специально, потому что я мог печатать то, что тестируется в удобочитаемой форме.
Читается как проза. Что для меня большой плюс. Но, как и во всем, результаты будут разными.
describe Model do
it "should do what I want" do
this.should == that
it.should be_nil
that.should_not be_true
end
end
Также, независимо от среды тестирования, вам также следует подумать об инструменте покрытия, таком как RCov . Он интегрируется с rspec и сообщит вам, где ваш код не тестируется.
Лично я предпочитаю rspec. Я обнаружил, что сосредоточение моих тестов на поведении действительно помогло мне обойти то, что я пытался сделать.
С rspec go и получите что-то вроде Factory Girl или Machinist для генерации ваших тестовых данных, не используйте фикстуры.
Что касается того, что сказал Майк, проект rspec довольно активен, и новые версии обычно выпускаются с каждой версией rails, чтобы помочь ему идти в ногу с развитием фреймворка.