この文書の現在のバージョンと選択したバージョンの差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
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> | ||
+ | |||
+ |