我在一个需要单元测试的react应用程序服务中使用了以下方法。
onDeclineCallback = () => {
console.log("boom " + document.referrer);
if (document.referrer === "") {
console.log("redirect to our age policy page");
} else {
history.back();
}
};
我的单元测试当前如下所示:
history.back = jest.fn(); // Mocking history.back as jest fn
describe('age verifiction service test', () => {
it('returns user to referrer if declined and referrer is available', () => {
document = {
...document,
referrer: 'Refferer Test', // My hacky attempt at mocking the entire document object
};
ageVerification.onDeclineCallback();
expect(history.back).toHaveBeenCalledTimes(1);
});
});
我试图找到一种模拟document.referrer
的方法,以便为每种情况编写一个单元测试。有人能提供一种方法吗?
3条答案
按热度按时间9w11ddsr1#
可以使用
Object.defineProperty
方法设置document.referrer
的模拟值。例如
index.ts
:index.spec.ts
:100%覆盖的单元测试结果:
源代码:https://github.com/mrdulin/jest-codelab/tree/master/src/stackoverflow/59198002
jtw3ybtb2#
为我工作,开玩笑的方式:
ewm0tg9j3#