Вот мой вспомогательный метод, который я хочу протестировать.
def posts_correlation(name)
if name.present?
author = User.find_by_name(name)
author.posts.count * 100 / Post.count if author
end
end
Фабрика для пользователя.
factory :user do
email 'user@example.com'
password 'secret'
password_confirmation { password }
name 'Brian'
end
И, наконец, тест, который постоянно терпит неудачу.
test "should calculate posts count correlation" do
@author = FactoryGirl.create(:user, name: 'Jason')
@author.posts.expects(:count).returns(40)
Post.expects(:count).returns(100)
assert_equal 40, posts_correlation('Jason')
end
Вот так.
UsersHelperTest:
FAIL should calculate posts count correlation (0.42s)
<40> expected but was <0>.
test/unit/helpers/users_helper_test.rb:11:in `block in <class:UsersHelperTest>'
И вся проблема в том, что mocha на самом деле не высмеивает количество сообщений автора, а возвращает 0 вместо 40.
Есть ли лучшие способы сделать это: @author.posts.expects(:count).returns(40)
?