Функциональный тест Rails - Что оценивается во время assert_difference ('SomeModel.count')? - PullRequest
0 голосов
/ 23 декабря 2010

В функциональном тесте, который создается Rails (при генерации модели с использованием скаффолдинга), есть тест, который выглядит следующим образом:

test "should create product" do
    assert_difference('Product.count') do
      post :create, ...
    end 

    assert_redirected_to ...
end

Мой вопрос заключается в том, что на самом деле оценивается Product.count?

Количество строк в таблице products?

1 Ответ

1 голос
/ 23 декабря 2010

Это количество строк в таблице продуктов?

краткий ответ - Да

на самом деле выполняется код ruby ​​Product.count, что просто происходитвыполнить sql, чтобы получить количество всех записей в таблице продуктов.

Я полагаю, что он выполняет код перед оценкой блока, а затем повторно запускает его и сравнивает значения после выполнения блока

http://api.rubyonrails.org/classes/ActiveRecord/Calculations.html#method-i-count

http://api.rubyonrails.org/classes/ActiveSupport/Testing/Assertions.html#method-i-assert_difference

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...