簡體   English   中英

如何開玩笑地從同一模塊中窺探 function?

[英]How to spyOn a function from the same module in jest?

考慮這組代碼片段,我想為function A編寫單元測試,它在執行期間內部調用function B 假設B是一組 API 調用,用於驗證我想將返回值模擬為真。

但是這種spyOn方法不起作用,並且B中的 API 調用仍然被執行。 我已經看到 mocking 的方法是完整的模塊jest.requireActual() ,但它們似乎也不起作用。

在不改變代碼庫index.ts的情況下,有什么更好的方法來測試這些功能?

 //index.ts async function A (a:string, b:string, c:string) { // code await B(data); // code } async function B (data:customType) { //code //API calls //code } export default { A, B }

 //index.test.ts import index from '../index.ts'; describe('Test suit', ()=>{ it('should be a test for function A', async ()=> { jest.spyOn(index, 'B').mockReturnValue(true); // code const result = await index.A('a','b','c'); // code }) })

當函數僅與 jest 位於同一模塊中時,沒有真正的好方法。

但是你可以使用Rewire ,它在這個答案中得到了解釋,並且在我的類似情況下工作得很好: https://stackoverflow.com/a/52725067/16068019

否則,如果這是一個選項,您可以將您的一個功能移動到不同的模塊,但這並不總是一個選項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM