2013-12-09 3 views
0

У меня есть директива, которая содержит другую директиву. Вот директива:Проверка директивы, которая зависит от другой директивы - Angularjs

<div class="chat-container"> 
<h5 class="chat-header"> 
    <span class="patient-name-container">{{encounter.patient.firstName }} {{encounter.patient.lastName}}</span></h5> 
    <div ng-show="showMessages"> 
    <div messages-container messages="encounter.comments"></div> 
    </div> 
</div> 

А вот мой тест:

var element; 
    beforeEach(module('app/views/chat.container.html')); 
    beforeEach(inject(function($templateCache, $compile, $rootScope) { 
    var chatTemplate = $templateCache.get('app/views/chat.container.html'); 
    $templateCache.put('views/chat.container.html', chatTemplate); 

    var directive = angular.element('<div chat-container max-chat-count="800" class="pull-left"></div>'); 
    element = $compile(directive)($rootScope); 
    $rootScope.$digest(); 
    })); 

    it('the remaining count to be 800', function() { 
    expect(element.find('#counter').text()).toBe('800'); 
    }); 
}); 

Моя ошибка Error: Unexpected request: GET views/messages.container.html. Он ищет html, чтобы создать директиву messages-container, но он не может ее найти. Я попытался добавить другую директиву, как это право после того, как первый:

var messagesTemplate = $templateCache.get('app/views/messages.container.html'); 
$templateCache.put('views/messages.container.html', messagesTemplate); 

, но я все еще получаю ту же ошибку, поэтому у меня есть 2 вопроса. Во-первых - Как это проверить? Вторым - теперь я создаю свой тест с зависимостью от другой директивы, какой правильный способ справиться с этим?

+0

«но это все еще не работает» - была ли та же ошибка? Он должен работать нормально, пока '$ templateCache' получает шаблон * messages.container * перед тем, как вы' компилируете' 'chat-container' ... и до тех пор, пока вы загрузили модуль, содержащий второй шаблон. – Andyrooger

+0

Я все еще получаю ту же ошибку. – jhamm

ответ

0

Проблема заключалась в том, что я не добавлял шаблон с функцией module, прежде чем я попытался получить к нему доступ. Вот код, который фиксируется вопрос:

var element, scope; 
    beforeEach(module('app/views/chat.container.html')); 
* beforeEach(module('app/views/messages.container.html')); 
    beforeEach(inject(function($templateCache, $compile, $rootScope) { 
    var chatTemplate = $templateCache.get('app/views/chat.container.html'); 
    $templateCache.put('views/chat.container.html', chatTemplate); 
    var messagesTemplate = $templateCache.get('app/views/messages.container.html'); 
    $templateCache.put('views/messages.container.html', messagesTemplate); 
    var directive = angular.element('<div chat-container max-chat-count="800" class="pull-left"></div>'); 
    element = $compile(directive)($rootScope); 
    $rootScope.$digest(); 
    scope = $rootScope; 
    })); 

Я не имел линию с * раньше. Теперь все работает отлично.

Смежные вопросы