手元の環境だと、テストを落ちるようにしてもテストは通り、これは Promise
が待ち合わされていないために、 expect
の行が実行されていないためです。
ちなみに1つも expect
がない場合に、そのテストは Pass するので要するに空のテストと同じ動作となっています。
javascript
1const fetch = async (n) => {
2 return n;
3};
4
5test("the res.data.id id is 3", () => {
6 fetch(10).then((data) => {
7 expect(data).toBe(15); // 15 にしたら通らないはず
8 });
9});
10
11test("the res.data.id id is 3", () => {
12 // これと同じ意味になっている
13});
14
✓ the res.data.id id is 3 (3ms)
Test Suites: 1 passed, 1 total
Tests: 1 passed, 1 total
return
をつけることで Promise
を待ち合わせてくれるので、
javascript
1const fetch = async (n) => {
2 return n;
3};
4
5test("the res.data.id id is 3", () => {
6 return fetch(10).then((data) => {
7 expect(data).toBe(15);
8 });
9});
expect(received).toBe(expected) // Object.is equality
Expected: 15
Received: 10
5 | test("the res.data.id id is 3", () => {
6 | return fetch(10).then((data) => {
> 7 | expect(data).toBe(15);
| ^
8 | });
9 | });
10 |
と正常にエラーを吐きます。 & 10とすればテストをパスします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。