Я новичок в Jest и только что изучил React Native Expo. У меня есть служба, которая обрабатывает вызовы API на сервер. Я хочу проверить этот сервис, издеваясь над ним. Я понятия не имею, почему это не работает. Документация Jest о насмешках для меня довольно расплывчата.
Я не понимаю, почему мой оригинальный метод не смоделирован.
Мой каталог выглядит следующим образом:
services
├── __tests__
| └──goalService.test.js
|
├── __mocks__
│ └── goalService.tsx
|
└── goalService.tsx
goalService.tsx в root служб имеет методы, которые возвращают обещание.
Код из каждого файла:
goalService.tsx в папке mocks
// __mocks__/goalService.tsx
class GoalService {
fakeGoals = [
{
"id": 1,
"name": "Test",
"description": "test test test",
"user_id": 2,
"createdAt": "2020-04-13T11:03:47.231Z",
"updatedAt": "2020-04-13T13:28:58.305Z"
}
];
GetGoals = (userID) => {
return new Promise((resolve, reject) => {
resolve(this.fakeGoals);
});
}
AddGoal = (newGoal) => {
this.fakeGoals.push(newGoal);
return new Promise((resolve, reject) => {
resolve(this.fakeGoals);
})
}
}
goalService. js в папке с тестами
// __tests__/goalService.js
import GoalService from './../goalService';
jest.mock('./../goalService');
it('Fetches goals data', done => {
return GoalService.GetGoals(2).then(data => {
expect(data.length).toBeGreaterThan(0);
done();
});
});
goalService.tsx
// goalService.tsx
class GoalService {
url = 'xxx';
GetGoals = (userID) => {
return fetch(this.url + 'goal/user/' + userID)
.then((response) => {
return response.json();
}).then((data) => {
return data.reverse();
})
.catch((error) => {
console.error('Error:', error);
});
}
AddGoal = (newGoal) => {
return fetch(this.url + 'goal', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(newGoal)
}).then((response) => response.json())
.then((data) => {
console.log('Success:', data);
return data;
})
.catch((error) => {
console.error('Error:', error);
return false;
});
}
}
...
const goalService = new GoalService();
export default goalService;
Тест выдает следующую ошибку:
TypeError: _goalService.default.GetGoals is
not a function
Как именно протестировать GetGoals и AddGoals?
Я действительно застрял здесь, пожалуйста, помогите мне.
Заранее спасибо!