Testing директива Угловое/Жасмин - 'ожидать' не работает

2017-01-15 4 views
0

Учитывая эту директиву:Testing директива Угловое/Жасмин - 'ожидать' не работает

angular.module(moduleName). 
directive("dir1", function() { 
     return { 
     restrict: "AE",   
     scope: { 
      myvar: '=' 
     }, 
     templateUrl: "app/directives/dir1.html", 
     link: function (scope, element, attrs) { 
      scope.myvar = "Hello"; 
     } 
     } 
}); 

С этим шаблоном dir1.html:

<span class="myclass">{{myvar}}</span> 

Я пытаюсь модульного тестирования с:

fdescribe("dir1 Directive", function() { 

    var scope,element; 

    beforeEach(module(moduleName)); 
    beforeEach(module('app/directives/dir1.html')); 

    beforeEach(inject(function ($templateCache,$rootScope,$compile) { 
     var formElement = angular.element('<div dir1></div>'); 
     scope = $rootScope.$new(); 
     element = $compile(formElement)(scope); 
     scope.$digest(); 
    })); 


    it("should have content", function() { 
     expect(element.find('class')).toEqual('myclass'); 
     expect(element.find('span').text).toEqual('Hello'); 
    }) 

}); 

В тесте я пытаюсь получить значение атрибута класса и содержимого текста в th e span, но я получаю:

Expected ({ length: 0, prevObject: ({ 0: HTMLNode, length: 1 }), 
    context: undefined, selector: 'class' }) to equal 'myclass'. 
     test/directives/dir1.test.js:20:40 
     [email protected]://localhost:9876/context.js:151:17 
     Expected Function to equal 'Hello'. 
     test/directives/dir1.test.js:21:44 
     [email protected]://localhost:9876/context.js:151:17 

Что я делаю неправильно?

+1

Что вы ожидаете 'element.find ('класс')' делать? – jonrsharpe

+0

Я ожидал получить значение атрибута класса – ps0604

+0

Это не то, как работают поисковики элементов, как вы уже знаете, учитывая, что тогда вы используете 'element.find ('span')'; он найдет элемент ''. Кажется, ваш вопрос действительно * «Как получить классы по элементу?» *. .find ('. Myclass') 'найдет элемент с этим классом. – jonrsharpe

ответ

0

Для тех, кому интересно, это решение (благодаря JB Nizet)

it("should have content", function() { 
    var span = element.find('span'); 
    expect(span.hasClass('myclass')).toEqual(true); 
    expect(span.text()).toEqual('Hello'); 
}) 
Смежные вопросы