J'essaye de me moquer de new Date()
pour renvoyer une date spécifique. Le code suivant:
const now = new Date()
jest.spyOn(global, 'Date').mockImplementation(() => now)
donne une erreur de compilation: Argument of type '() => Date' is not assignable to parameter of type '() => string'. Type 'Date' is not assignable to type 'string'
.
Je pense que la raison en est que la plaisanterie pense que j'essaye de me moquer de Date()
au lieu de new Date()
. En effet, Date()
renvoie une chaîne. Comment puis-je résoudre ce problème?
eh bien j'ai essayé cette solution, et cela a fonctionné ..
class MockDate extends Date {
constructor() {
super("2020-05-14T11:01:58.135Z"); // add whatever date you'll expect to get
}
}
et dans l'avant-chaque de ce test, j'ai ajouté:
// @ts-ignore
global.Date = MockDate;
de cette façon chaque fois que j'appelais une fonction qui avait une nouvelle Date () à l'intérieur, elle renvoyait la date que j'ai ajoutée dans le constructeur de la classe MockDate ci-dessus!