【发布时间】:2015-04-03 00:54:58
【问题描述】:
如果我添加 flush() 调用它会给我“错误:意外请求:获取模板/createAccountWithAcme.html”。为什么它告诉我有关视图模板的信息,我该如何避免这种情况?这是一个 Ionic Framework (v 1.0.0 RC2 – AngularJS) 项目。
编辑: 以前,我错误地省略了我尝试过的 $httpBackend.when 或 $httpBackend.whenGET 调用。更新代码时同样的错误:
编辑 2: 更多细节:这是一个使用 ui-router 的 Ionic 框架项目(v1.0.0 RC2)。当我尝试删除所有其他测试时,我仍然收到错误,但注意到它抱怨的模板是 UI 路由器配置中定义的最后一个模板(在 Ionic 中,路由器是 $stateProvider)。如果我在状态定义的末尾添加了一个虚拟状态,那么它就会成为测试抱怨的那个状态。所以我决定路由器必须尝试加载我的测试没有预料到的模板。我已经发布了一个修复程序。
describe('foo', function() {
var $http, $httpBackend;
$http = void 0;
$httpBackend = void 0;
$http = null;
$httpBackend = null;
beforeEach(module('acme'));
beforeEach(inject(function($injector) {
$http = $injector.get('$http');
$httpBackend = $injector.get('$httpBackend');
$httpBackend.whenGET('http://www.google.com').respond({});
}));
it('should have parsed genres', function() {
console.log('foo');
$http({
method: 'GET',
url: 'http://www.google.com'
}).then(function(response) {
console.log('success: ', response);
}, function(error) {
console.log(error);
});
$httpBackend.flush();
});
});
【问题讨论】:
-
这是唯一运行的测试吗? acme 模块是否还有一个正在执行的运行块?
-
@Chandermani 它不是唯一运行的测试,但它是唯一失败的测试。如果我将刷新调用移到另一个测试中,它也会在那里失败。到目前为止,这是我唯一想要冲洗的地方。在我的应用程序中,acme 模块确实有一个运行块,是的,尽管我是 karma/jasmine 的新手,并且不知道在我的测试运行时该运行块是否被执行。我不这么认为,但我在假设。
-
可能有一些路由测试正在获取模板,或者一些指令测试加载了指令模板。看你上面模板的参考代码,看看有没有对应的测试。
标签: angularjs ionic-framework karma-jasmine