この文書の現在のバージョンと選択したバージョンの差分を表示します。
| 両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
|
reactnative:jest [2019/03/05 00:52] ips |
reactnative:jest [2019/03/05 01:09] (現在) ips |
||
|---|---|---|---|
| ライン 10: | ライン 10: | ||
| npm i jest | npm i jest | ||
| </code> | </code> | ||
| + | |||
| + | ===== package.json ===== | ||
| <code> | <code> | ||
| //package.jsonに追加 | //package.jsonに追加 | ||
| ライン 16: | ライン 18: | ||
| }, | }, | ||
| "jest": { | "jest": { | ||
| - | "preset": "jest-expo" | + | "preset": "jest-expo", |
| + | "testEnvironment": "node" //必須ではない。jsdomを無効にしてテストを早くする | ||
| } | } | ||
| </code> | </code> | ||
| <code> | <code> | ||
| npm test | npm test | ||
| + | npm test -- --watch // ウォッチモードの場合 | ||
| </code> | </code> | ||
| ライン 189: | ライン 193: | ||
| }) | }) | ||
| </code> | </code> | ||
| + | |||
| + | ==== スパイは基本のfn()の組み合わせ ==== | ||
| + | <code javascript App.test.js> | ||
| + | describe("スパイ",()=>{ | ||
| + | test("スパイは基本のfn()の組み合わせ", () => { | ||
| + | |||
| + | // オリジナル実装をバックアップ | ||
| + | const originalAdd = math.add; | ||
| + | | ||
| + | // オリジナル実装でモックする | ||
| + | math.add = jest.fn(originalAdd); | ||
| + | | ||
| + | // オリジナル実装のスパイができるようになる | ||
| + | expect(app.doAdd(1, 2)).toEqual(3); | ||
| + | expect(math.add).toHaveBeenCalledWith(1, 2); | ||
| + | | ||
| + | // 実装を変更する | ||
| + | math.add.mockImplementation(() => "mock"); | ||
| + | expect(app.doAdd(1, 2)).toEqual("mock"); | ||
| + | expect(math.add).toHaveBeenCalledWith(1, 2); | ||
| + | | ||
| + | // オリジナル実装に戻す | ||
| + | math.add = originalAdd; | ||
| + | expect(app.doAdd(1, 2)).toEqual(3); | ||
| + | }) | ||
| + | }) | ||
| + | </code> | ||
| + | |||
| + | |||