Angularjs $httpBackend.flush()激活路由
我想测试以下服务:Angularjs $httpBackend.flush()激活路由,angularjs,angular-ui-router,karma-runner,karma-mocha,angular-mock,Angularjs,Angular Ui Router,Karma Runner,Karma Mocha,Angular Mock,我想测试以下服务: "use strict"; const BASE_API = APP_CONF.baseApi; export default function() { "ngInject"; class API { constructor() { this.loading = false; } logout() { this.loading = true; return $http.post(`${BASE_API}/logout`) .then(res
"use strict";
const BASE_API = APP_CONF.baseApi;
export default function() {
"ngInject";
class API {
constructor() {
this.loading = false;
}
logout() {
this.loading = true;
return $http.post(`${BASE_API}/logout`)
.then(res => {
this.loading = false;
return res.data;
}, err => {
this.loading = false;
throw err;
});
}
}
return new API();
};
我的测试:
"use strict";
let baseApi = APP_CONF.baseApi;
describe("Auth service", function() {
let Auth;
beforeEach(angular.mock.module("app"));
beforeEach(angular.mock.inject(function(_Auth_) {
Auth = _Auth_;
}));
context("method LOGOUT", function() {
let $httpBackend;
beforeEach(angular.mock.inject(function(_$httpBackend_) {
$httpBackend = _$httpBackend_;
$httpBackend.whenPOST(`${baseApi}/logout`).respond(200, { data: "ok"});
}));
it("should change 'loading' flag", function() {
Auth.logout();
assert.isTrue(Auth.loading);
$httpBackend.flush();
assert.isFalse(Auth.loading);
});
});
});
但我的测试失败,出现以下错误:
Chrome 51.0.2704 (Linux 0.0.0) Auth service method LOGOUT should change 'loading' flag FAILED
Error: Unexpected request: GET http://localhost:3000/api/mailboxes
No more request expected
在解决路由问题后调用此请求:
"use strict";
export function config($locationProvider, $stateProvider, $urlRouterProvider) {
"ngInject";
$urlRouterProvider.otherwise("404");
$locationProvider.html5Mode(true);
$stateProvider
.state("404", {
url: "/404",
template: `<view-404 class="v-404" />`
})
.state("home", {
url: "/",
template: `<view-home class="v-home" />`,
resolve: {
mailboxes: function(MailboxesApi, MailboxesStore, $state) {
"ngInject";
return MailboxesApi.getAll() // THIS LINE ACTIVATES UNEXPECTED REQUEST
.then(mailboxes => {
MailboxesStore.set(mailboxes);
let inbox = MailboxesStore.getByName("inbox");
if (inbox) {
$state.go("cabinet.mailbox", { mailboxid: inbox._id });
} else {
$state.go("cabinet.mailbox", { mailboxid: MailboxesStore.getByIndex(0)._id });
}
});
}
}
});
};
export function run($transitions) {
"ngInject";
$transitions.onError({ to: "*" }, (ErrorHandler, $error$) => {
"ngInject";
ErrorHandler.handle($error$);
});
};
“严格使用”;
导出函数配置($locationProvider、$stateProvider、$urlRouterProvider){
"ngInject";;
$urlRouterProvider。否则(“404”);
$locationProvider.html5Mode(true);
$stateProvider
.州(“404”{
网址:“/404”,
模板:``
})
.州(“家”{
网址:“/”,
模板:``,
决心:{
邮箱:函数(MailboxesApi、MailboxesStore、$state){
"ngInject";;
return MailboxesApi.getAll()//此行激活意外请求
。然后(邮箱=>{
邮箱存储集(邮箱);
让inbox=MailboxesStore.getByName(“收件箱”);
如果(收件箱){
$state.go(“cabinet.mailbox”,{mailboxid:inbox.\u id});
}否则{
$state.go(“cabinet.mailbox”,{mailboxid:mailboxsstore.getByIndex(0)。\u id});
}
});
}
}
});
};
导出函数运行($transitions){
"ngInject";;
$transitions.onError({到:“*”},(ErrorHandler,$error$)=>{
"ngInject";;
ErrorHandler.handle($error$);
});
};
我注意到在我的测试中调用$httpBackend.flush()后,状态“home”被激活。为什么会这样
我的依赖项:
- 角度模拟1.5.7
- 角度1.5.6
- 角度用户界面路由器1.0.0-alpha.5
- 业力0.13.22
- 摩卡咖啡2.5.3
- 柴3.5.0
$httpBackend.whenGET('url').respond(200, { data: "ok"});