Угловое тестирование с использованием мокко, неожиданные запросы
В моих угловых тестах я продолжаю получать Error: Unexpected request: GET 'some/rails/view.html'
Для тестирования я использую коначу, в которой вместо жасмина используется мокко. Проект основан на приложении Rails, которое является причиной использования конача.
Вот действительно простой пример теста, который проверяет, определен ли контроллер в приложении Angular:
describe "ShowAccountCtrl", ->
beforeEach angular.mock.module('APP_NAME')
beforeEach inject(($rootScope, $controller) ->
@scope = $rootScope.$new()
@ctrl = $controller 'ShowAccountCtrl',
$scope: @scope
)
it "should be defined", ->
expect(@ctrl).to.not.be.undefined
Я видел кое-что о $httpBackend.when('GET', /\.html$/).passThrough();
но у коначи, похоже, нет подобного метода passThrough()
Эти проблемы всегда случаются $httpBackend.flush()
,
Кто-нибудь побеждал эту проблему раньше? Есть ли способ игнорировать запросы к шаблонам рельсов, чтобы я мог сосредоточиться на тестировании функциональности контроллеров?
1 ответ
Это потому, что Konacha не поддерживает интеграцию с представлениями Rails. Решение заключается в загрузке угловых $templateCache
вручную, аналогично тому, что вы должны делать при использовании шаблонов с конвейером ресурсов. Чтобы это работало, вам нужно, чтобы ваш тест имел препроцессор ERB (например, some_spec.js.coffee.erb
).
beforeEach inject ($templateCache) ->
template = '/app/templates/view.html'
content = """
<%= IO.read(Rails.root.join('/app/templates/view.html')) %>
"""
$templateCache.put template, content