Как протестировать объем в направляющих 3

Что является лучшим способом протестировать объемы в направляющих 3. В направляющих 2, я сделал бы что-то как:

Rspec:

it 'should have a top_level scope' do
  Category.top_level.proxy_options.should == {:conditions => {:parent_id => nil}}
end

Это перестало работать в направляющих 3 с "неопределенным методом 'proxy_options' для []: ActiveRecord:: Отношение" ошибка.

Как люди тестируют это, объем указан с корректными опциями? Я вижу, что Вы могли исследовать ареальный объект и смогли делать некоторые ожидания по этому, но я не уверен, какой лучший способ сделать это был бы.

24
задан Trey Bean 11 June 2010 в 18:03
поделиться

1 ответ

В идеале ваши модульные тесты должны рассматривать модели (классы) и их экземпляры как черные ящики. В конце концов, вас волнует не реализация, а поведение интерфейса.

Поэтому вместо тестирования того, что область видимости реализована определенным образом (то есть с определенным набором условий), попробуйте проверить, что она ведет себя правильно - что она возвращает экземпляры, которые должна, и не возвращает экземпляры, которых не должна.

describe Category do
  describe ".top_level" do
    it "should return root categories" do
      frameworks = Category.create(:name => "Frameworks")

      Category.top_level.should include(frameworks)
    end

    it "should not return child categories" do
      frameworks = Category.create(:name => "Frameworks")
      rails = Category.create(:name => "Ruby on Rails", :parent => frameworks)

      Category.top_level.should_not include(rails)
    end
  end
end

Если вы напишете свои тесты таким образом, вы сможете свободно изменять факторы своих реализаций по своему усмотрению, без необходимости изменять тесты или, что более важно, не беспокоясь о том, что вы неосознанно нарушите работу вашего приложения.

27
ответ дан 28 November 2019 в 22:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: