Чтобы смоделировать значение userPages
, вы должны смоделировать getUserPage
.Чтобы достичь этого, это зависит от того, где и как определены getUserPage
и canViewPage
.Я собираюсь предположить, что эти две функции определены в классе MyAwesomeClass
// MyAwesomeClass.js
export default class MyAwesomeClass {
canViewPage(page) {
const userPages = this.getUsersPages();
if (userPages.includes(page)) {
return true;
}
return false;
}
getUsersPages() {
// here i hardcode a list of pages, for simplicity purposes
const pages = ['home', 'about', 'contact'];
return pages;
}
}
// test.js
import MyAwesomeClass from '<path to MyAwesomeClass.js>'
test('test canViewPage', () => {
const instance = new MyAwesomeClass()
const spy = jest.spyOn(instance, 'getUsersPages');
spy.mockReturnValue(['mockItem1','mockItem2','mockItem3']);
expect(instance.canViewPage('premiumPage')).toBe(false);
expect(instance.canViewPage('mockItem1')).toBe(true);
spy.mockRestore();
});
, если canViewPage
и getUsersPages
являются статическими методами в классе, вы по-другому насмехаетесь
test('test canViewPage', () => {
const spy = jest.spyOn(MyAwesomeClass, 'getUsersPages');
spy.mockReturnValue(['mockItem1','mockItem2','mockItem3']);
expect(MyAwesomeClass.canViewPage('premiumPage')).toBe(false);
expect(MyAwesomeClass.canViewPage('mockItem3')).toBe(true);
spy.mockRestore();
});