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測試」
有誰知道爲什麼嗎?謝謝。