![](/img/trans.png)
[英]Unit Testing Troubleshoot in Karma-Jasmine for .sort() function in Angular
[英]How to do unit testing of function which is depends on another function using karma jasmine
我想测试使用其他方法jwt_decode的getTokenExpirationDate()方法,它是从jwt-decode导入的。 如何对该方法进行单元测试? 如何模拟此jwt_decode方法。
import { Injectable } from '@angular/core';
import {CanActivate, Router} from '@angular/router';
import * as jwt_decode from 'jwt-decode';
@Injectable({
providedIn: 'root'
})
export class AuthGuard implements CanActivate {
constructor(private router: Router) { }
canActivate(): boolean {
const token = localStorage.getItem(('loginToken'));
if (this.isTokenExpired(token)) {
localStorage.removeItem('loginToken');
this.router.navigate(['/login']);
return false;
} else {
return true;
}
}
isTokenExpired(token: string): boolean {
if (!token) { return true;
} else {
const date = this.getTokenExpirationDate(token);
if (date === undefined) {
return false;
} else {
return !(date.valueOf() > new Date().valueOf());
}
}
}
getTokenExpirationDate(token: string): Date {
const decoded = jwt_decode(token);
if (decoded.exp === undefined) {
return null;
} else {
const date = new Date(0);
date.setUTCSeconds(decoded.exp);
return date;
}
}
}
您不嘲笑jwt_decode
。 您只为getTokenExpirationDate
编写测试。
jwt_decode
是您的公共函数的内部调用。 您可以通过为getTokenExpirationDate
编写测试用例来隐式测试它。
它似乎是一个纯函数,没有副作用,可以安全使用,并且方法的行为将保持一致。
使用它,不要模拟它或为其编写单元测试。 测试您的业务逻辑,而不是您的依赖项。
而且jwt_decode
已经有单元测试: https : //github.com/auth0/jwt-decode/blob/master/test/tests.js
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.