Je dois trouver le moyen de changer la valeur userAgent
. J'ai essayé de spyOn
le window.navigator.userAgent
. Mais ça n'aide pas.Jasmine.js Testing - espionner window.navigator.userAgent
JS:
@Injectable()
export class DetectBrowserService {
browserIE: boolean;
constructor() {
this.browserIE = this.detectExplorer();
}
public detectExplorer() {
const brows = window.navigator.userAgent;
const msie = brows.indexOf('MSIE ');
if (msie > 0) {
// IE 10 or older => return version number
return true;
}
}
}
Spec:
it('should test window.navigator.userAgent',() => {
const wind = jasmine.createSpy('window.navigator.userAgent');
wind.and.returnValue('1111');
detectBrowserService = TestBed.get(DetectBrowserService);
console.log(window.navigator.userAgent);
});
Je me attendais 1111
, mais on m'a donné la vraie information au sujet de mon navigateur.
Je recommande d'encapsuler les appels api natifs dans des fonctions restreintes (comme dans http://www.adequatelygood.com/Writing-Testable-JavaScript.html), et d'espionner ces fonctions à la place des API natives. S'appuyer sur des fonctions strictes rend votre code plus portable (rendu côté serveur, problèmes de navigateur multiples, etc.) et testable. J'ai toujours eu de la difficulté à espionner les api de fenêtres indigènes avec du jasmin. – Sergeon