2014-04-15 276 views
0

我寫了一個指令「XXX」,它有一個瀏覽器和Jasmine測試框架不同的行爲:相同的代碼,但不同的行爲AngularJS指令

someapp.directive('xxx', function() { 
    return { 
     restrict: 'AE', 
     replace: true, 
     scope: { 
     x: '=xxx' 
     }, 
     template: '<div>Hello World {{x}}</div>', 
     link: function (scope, element, attrs) { 
     } 
    }; 
    }); 

對於瀏覽器:

<body ng-controller="MainCtrl"> 
    <div xxx="name"></div> 
</body> 

someapp.controller('MainCtrl', function($scope) { 
    $scope.name = 'Test'; 
}); 

它將在瀏覽器的屏幕上顯示「Hello World Test」。 如果在鏈接功能,我添加一行:

global_var = element; 

,並添加HTML的一行

<button onclick="javascript:alert(global_var.text());">Test</button> 

它也將彈出警告對話框中顯示文本「Hello World測試」。

然而,茉莉花測試框架:

beforeEach(module('someapp')); 

var element, 
    scope; 

beforeEach(inject(function ($rootScope) { 
    scope = $rootScope.$new(); 
    scope.name = 'Test'; 
})); 

it('should expand "x"', inject(function ($compile) { 
    element = angular.element('<div xxx="name"></div>'); 
    element = $compile(element)(scope); 
    expect(element.text()).toBe('Hello World Test'); 
})); 

它會報告錯誤:預期的 「Hello World {{X}}」 是的 「Hello World測試」

有誰知道爲什麼嗎?謝謝。

回答

相關問題