Я создаю очень маленький гем, чтобы прочитать формат данных изображения и вернуть изображение в виде скучного рубинового массива или хорошего narray , в зависимости от того, a) был ли запрошен массив и б) если драгоценный камень доступен и необходим. Мой замысел заключается в том, что если кто-то хочет использовать narray, он может, но он должен явно потребовать это заранее. При чтении данных изображения я проверяю, определено ли значение narray (было необходимо), и просто добавляет предупреждение в переменную экземпляра msg для последующей печати / регистрации.
Я хотел бы включить тест для этого (я использую rspec2 и mocha для насмешек), но я немного новичок в фактическом использовании rspec. Я хотел бы сделать что-то вроде:
it "should return an narray if requested" do
obj = NRead.new(@string, :bin => true, :narray => true)
obj.image_narray.should_not be_nil
end
it "should add an NArray Install message and not set the image_narray if NArray was not available" do
Object.stubs(:defined?).with(:NArray).returns(:false)
obj = NRead.new(@string, :bin => true, :narray => true)
obj.msg.should_not be_empty
obj.msg.grep(/Please gem install narray/).empty.should be_false
obj.image_narray.should be_nil
obj.image_ruby_array.size.should == @fixture_image_length
end
... но я, должно быть, упускаю смысл использовать заглушки, потому что эта заглушка не меняет поведение определенных ?. Независимо от заглушки, определены? возвращает "реальное" значение (т. е. если я раскомментирую требование в коде, определено? ложно и мое предупреждение успешно добавлено).
Это даже не стоит тестировать? Есть лучший способ сделать это? Любые мысли будут оценены. Спасибо,