我有一个像这样的链接的Angular ......
scope: {
etud:"="
}
link: function(scope,element,attrs) {
scope.getWarningClass = function(){
var alertClass = "";
if(scope.etud <= 2){
alertClass = "red_alert";
}
else if(scope.etud <= 4){
alertClass = "yellow_alert";
}
return alertClass;
}
}
和部分相似...
<div class="sane" ng-class="getWarningClass()"></div>
我正试图用茉莉花来测试这个......
beforeEach(inject(function (_$compile_, $rootScope) {
$compile = _$compile_;
scope = $rootScope.$new();
}));
it("Test 1", function (done) {
...
scope.etud = 2.1;
scope.$digest();
expect(elm.hasClass("sane")).toBeTruthy();
expect(elm.hasClass("red_alert")).not.toBeTruthy();
expect(elm.hasClass("yellow_alert")).toBeTruthy();
..
}
似乎ng-class函数永远不会被调用如果我将函数添加到测试中就像... ...
beforeEach(inject(function (_$compile_, $rootScope) {
$compile = _$compile_;
scope = $rootScope.$new();
}));
it("Test 1", function (done) {
...
scope.etud = 2.1;
scope.getWarningClass = function(){
var alertClass = "";
if(scope.etud <= 2){
alertClass = "red_alert";
}
else if(scope.etud <= 4){
alertClass = "yellow_alert";
}
return alertClass;
}
scope.$digest();
expect(elm.hasClass("sane")).toBeTruthy();
expect(elm.hasClass("red_alert")).not.toBeTruthy();
expect(elm.hasClass("yellow_alert")).toBeTruthy();
..
}
但现在我需要2个地方的代码!有什么方法吗?
答案 0 :(得分:0)
这里有几个问题,但道德是使用标签,所以我会做更接近......
的事情var element = angular.element('<warning-box />');
view = $compile(element)(scope);
...
这当然会抛出一个关于它不期待另一个GET调用的例外。因此,您还需要使用$templateCache来提供部分内容。现在一切都按预期工作了。