コードを使用してサーバーレスアプリケーションを起動および停止しようとしています。すべてのテストに合格したら、開始および停止できます。ただし、テストが失敗した場合はglobalTeardown
は実行されません。ここでサンプルプロジェクトを確認できます: https://github.com/bilalsha/sls-test-jest/tree/fail_test
teardown.js
module.exports = async function() {
let slsOfflineProcess = global.__SERVERD__;
slsOfflineProcess.stdin.write('q\n');
slsOfflineProcess.stdin.pause();
await slsOfflineProcess.kill('SIGINT');
console.log('Serverless Offline stopped');
};
output
7 | expect(res.statusCode).toEqual(200);
> 8 | expect(res.body).toEqual('Go Serverless v1.0! Your function executed successfully!');
| ^
9 | });
10 | });
11 |
at Object.<anonymous> (handler.test.js:8:20)
Test Suites: 1 failed, 1 total
Tests: 1 failed, 1 total
Snapshots: 0 total
Time: 1.972s, estimated 2s
Ran all test suites.
npm ERR! Test failed. See above for more details.
あなたができることはafterAll
関数を含むスクリプトを作成して追加することです:
afterAll(() => {
console.log("I ran");
});
そして、スクリプトをsetupFiles
またはsetupFilesAfterEnv
に追加します。私の場合、テストに失敗した1つの反応pocコードを排出しました。
package.json
のJest設定に次のエントリがありました:
"jest": {
...
"setupFilesAfterEnv": [
"<rootDir>/src/setupTests.js"
],
...
}
したがって、以下のsetupTests.js
に、編集したファイルの句を追加しました。
// jest-dom adds custom jest matchers for asserting on DOM nodes.
// allows you to do things like:
// expect(element).toHaveTextContent(/react/i)
// learn more: https://github.com/testing-library/jest-dom
import '@testing-library/jest-dom/extend-expect';
afterAll(() => {
console.log("I ran");
});
今、私が私のテストを実行したとき、これは結果です:
FAIL src/App.test.js
✓ renders learn react link (14ms)
✕ renders class (5ms)
● renders class
expect(jest.fn()).toHaveBeenCalledTimes(expected)
Expected number of calls: 1
Received number of calls: 0
18 | // someClass.someProp = "";
19 | render(<App />);
> 20 | expect(track).toHaveBeenCalledTimes(1);
| ^
21 | });
22 |
at Object.<anonymous> (src/App.test.js:20:17)
console.log src/setupTests.js:8
I ran <---------------
Test Suites: 1 failed, 1 total
Tests: 1 failed, 1 passed, 2 total
Snapshots: 0 total
Time: 1.352s, estimated 2s
Ran all test suites.
テストに失敗した後でもI ran
が存在することがわかります。これはあなたが使うかもしれない代替手段です、あなたはおそらく問題を解決することがglobalTeardown
が機能していないよりもっと重要であると私が考えた賞金を入れたので。