Кто-либо мог объяснить, что делает этот тестовый код?:
assert_difference('Post.count') do
post :create, :post => { :title => 'Hi', :body => 'This is my first post.'}
end
и:
assert_difference 'ActionMailer::Base.deliveries.size', +1 do
post :invite_friend, :email => 'friend@example.com'
end
Я не могу понять это даже при том, что я прочитал документацию.
Спасибо!
assert_difference проверяет, что результат вычисления его первого аргумента (строка, которая может быть передана в eval
) изменяется на определенную величину после вызова переданного блока. Первый пример выше может быть «развернут» до:
before = Post.count # technically, eval("Post.count")
post :create, :post => { :title => 'Hi', :body => 'This is my first post.'}
after = Post.count
assert_equal after, before + 1
Это просто проверка того, что количество объектов любого указанного типа увеличилось на 1. (Это простой способ проверить, что объект был добавлен в БД)