TypeScript - בדיקות Async של Jest לא נכשלות, אבל שגיאת האסרטציה מוצגת ביציאת הבדיקה
יש לי אובייקט ספק שמחזיר הבטחה. אני מנסה ליצור בדיקות יחידה ב-Jest עבור אובייקט הספק הזה.
הנה דוגמת מבחן:
it('Should return repos for a known account', (done) => {
expect.assertions(1);
expect(apiProvider.ReposForUser('joon').then((data) => data.length)).resolves.toBeGreaterThan(0).then(done());
});
אני פשוט פותר את ההבטחה עם מערך ריק לעת עתה במחלקת הספק (כלומר, אני מצפה שהבדיקה תיכשל):
export class GithubAPIProvider implements IGithubDataProvider {
public ReposForUser(githubUser: string): Promise<GithubRepoData[]> {
return new Promise<GithubRepoData[]>((resolve, reject) => {
resolve([]);
});
}
}
כשאני מריץ את סקריפט ה-jest שלי, אני רואה שגיאת הבטחה שנכשלת בטקסט הפלט, אבל הבדיקה מוצגת כהצלחה:
השתמשתי בקריאת חזרה (callback) מסוג done בבדיקה שלי, למה jest לא ממתין לקריאת החזרה?
תשובה #1
גיליתי מה הבעיה. הייתי קורא לפונקציית done בתוך המתודה then שלי במקום להעביר הפניה לפונקציית done.
הקוד עכשיו נראה כך: ["done" במקום "done()"]:
it('Should return repos for a known account', (done) => {
expect.assertions(1);
expect(apiProvider.ReposForUser('joon').then((data) => data.length)).resolves.toBeGreaterThan(0).then(done);
});
