Witam mam pytanie jak otestować kod który jest API napisany w NodeJS i expressJS z bazą danych sequelize, ktorą chciałbym zmockować do testów jednostkowych. Z góry dzięki
JavaScript ma to do siebie, że wystarczy wpisać odpowiednią frazę w Google i zazwyczaj po chwili znajdujemy to czego szukamy
nodejs express sequalize database e2e
Pytanie jest mało precyzyjne, i ciężko streścić zawartość kursu, lub artykułu na ten temat w krótkim poście na forum, więc musisz przejrzeć kilka bibliotek i wybrać coś co Ci odpowiada.
-
Czy da się otestować
- da się -
jak otestować
- a to już więcej musisz powiedzieć co to za API, chociaż pewnie zgaduje że krzywe REST API jak teraz wszyscy robią -
mockować bazę danych sequelize
- prościej może być postawić pustą na potrzeby testów niż mokować, ale wtedy trzeba mądrzej testy pisać
Chciałem wykorzystać sequelize-mock ale nie mockuje mi bazy w pierwszej linicje metody Register dałem User.findAll() i wyświetla wszystko z bazy produkcyjnej a teoretycznie powinno tylko to co jest w db.Mock.define()
Nie wrzucaj kodu jako obrazek... Tylko przez specjalne znaczniki
```js
// I pomiędzy nimi Twój kod
```
Wracając do problemu z kodem to znalazłem repozytorium, które pokazuje jak połączyć jest.mock
z sequelize-mock
https://github.com/kvr2277/sequelize-mock-jest
Przykład jest sprzed 3 lat, więc w nowszych wersjach mogło się coś niestety zmienić. Musisz sprawdzić, czy u ciebie zadziala.
No właśnie ten sam kod znalazłem i mi to nie działa
Hmm... z tego sequelize-mock
nigdy nie korzystałem to ciężko powiedzieć czemu to nie działa, dodatkowo dajesz jakieś szczątkowe informacje co za bardzo nie pomaga w odnalezieniu przyczyny błędu.
Jesteś pewny, że dokładnie przejrzałeś to repozytorium? Bo ja już na pierwszy rzut oka widzę różnicę
// Twój kod ze screena, którego nie mogę nawet skopiować
jest.mock('../models/user.model.js', () => () => {
// ...
});
// VS
// Github
jest.mock('../main/models/USER', () => () => {
// ...
});
https://jestjs.io/docs/mock-functions
To rozszerzenie js
na samym końcu pliku jest zbędne, więc może dlatego ten mock nie działa? jest
pewnie nie może znaleźć odpowiedniego modułu.