2013-03-27 3 views
0
module gameSystem 
Class client 
.... 
... 
... 

def accounts_by_id(account_id) 

     response = query_account(CGI.escape(account_id)) 
     JSON.parse(response.body) 
    end 

... 
... 
... 
end 

У меня есть код, в котором метод account_by_id находится внутри класса Client. Этот метод возвращает JSON.parse (response.body). Кто-нибудь знает, как я могу издеваться или использовать заглушку для этого метода в рельсах, чтобы что-то вернуть.Mocking in rails

ответ

0

Я использовал функцию Mocha для издевательства/заглушки для тестов. Это привело бы к чему-то вроде

Client.any_instance.expects(:query_account).with("my-account-id").returns([some object to return])

до линии, которая вызывает эту функцию в тесте.

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

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