gpt4 book ai didi

angularjs - $rootScope.digest 在 Angular 指令单元测试中抛出 'no more request expected'

转载 作者:行者123 更新时间:2023-12-02 01:54:25 25 4
gpt4 key购买 nike

我编写了一个指令,用于检查某些权限并在权限为 KO 时从 DOM 中删除一个元素。

我很想对其进行单元测试,但是......哼哼,为了让这个简单的测试成功,我正在用头撞墙。

我使用 $rootScope.digest() 来编译一段 html。调用此函数时,angular 会尝试加载我的应用主页,但我收到了可怕的“没有更多请求”错误。

下面是测试:

describe('Unit testing permission-needed', function() {
var $compile;
var $rootScope;
var $httpBackend;

// Load the myApp module, which contains the directive
beforeEach(module('app'));

beforeEach(angular.mock.module('ngMockE2E'));

beforeEach(inject(function(_$compile_, _$rootScope_, $injector) {
$compile = _$compile_;
$rootScope = _$rootScope_;
$httpBackend = $injector.get('$httpBackend'); // not sur if I can inject it like others services ?
$httpBackend.whenGET('app/login/login.tpl.html').passThrough(); // this doesn't seem to work

}));



it('should replace the element with the appropriate content', function() {



// Compile a piece of HTML containing the directive
var element = $compile("<div permission-needed><span>Some content goes here</span></div>")($rootScope);
$rootScope.$digest(); // BAM => "no more request expected"

// Do the test here
// expect(....);
});
});

请注意,如果我使用 .respond('这里有一些 html');代替 .passThrough() 有效。

谢谢。

最佳答案

好吧,回答我自己:

使用 $new() rootScope,测试通过:

$rootScope = _$rootScope_.$new();

希望这对某人有所帮助。

关于angularjs - $rootScope.digest 在 Angular 指令单元测试中抛出 'no more request expected',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21003221/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com