假如要測試以下這個檔案,
models/user.js
import
from
'../service/username'
;export
default
class
user
getusername()
).catch
((err)
=>);
}}
service/user.js (queryusername介面定義在這個檔案中)
import axios from
'axios'
;export
function
queryusername
(id)})
;}
檔案目錄如下:
.
├── service
└── user.js // 定義axios請求的檔案
└── models
├── user.js // 使用axios請求的檔案
└── user.test.js // jest測試檔案
在測試的時候我們常常希望:把queryusername這個介面mock掉,不真正地傳送請求到後端
那就需要在user.test.js中進行mock:
user.test.js
import user from
'./user'
;// mock here
jest.
mock
('../service/user',(
)=>);
}else
is invalid`);
}}),
),};
});describe
('user',(
)=>);
test
('getusername fail'
,async()
=>);});
當你執行 jest user.test.js的時候,queryusername就會用你mock的函式
但假設另乙個模組client.js也用到了queryusername這個介面,那又要在client.test.js中再寫一遍這個jest.mock(』…』,()=>);
那就可以用方法2
在service/user.js同一目錄下,建立__mock__, 然後在__mock__資料夾下mock介面檔案
檔案目錄如下:
.
.├── service
├── __mocks__
│ └── user.js // 新增這個__mocks__/user.js
└── user.js
└── models
├── user.js
└── user.test.js
具體如下:
__mocks __/user.js (在這裡統一寫mock函式)
export
const queryusername = jest.fn(
(id)
=>
newpromise
((resolve, reject)
=>);
}else
is invalid`);
}}),
);
user.test.js (在test檔案中mock對應路徑的模組即可)
import user from
'./user'
;jest.
mock
('../service/user');
// jest.mock('../service/user', () => );
// } else is invalid`);
// }
// }),
// ),
// };
// });
describe
('user',(
)=>);
test
('getusername fail'
,async()
=>);});
完美地通過了所有測試:
Jest測試框架 Jest匹配器
jest常見的匹配器 修改package.json,加乙個 watchall scripts 測試值的最簡單方法是完全相等。test two plus two is four tobe用於object.is測試完全相等。如果要檢查物件的值,請toequal改用 test object assignm...
Jest測試初學(一) Jest 的簡單配置
執行安裝命令 npx jest init 然後在工程的根目錄下會生成乙個jest.config.js檔案 這個檔案值得細細研究!如果想修改測試覆蓋率報告的資料夾名稱,可以在jest.config.js中配置,修改這一項coveragedirectory coverage 執行命令npx jest c...
jest學習筆記
jest測試非同步請求 function fetchdata fn test 非同步請求 done done 如果返回是promise物件,可以用catch或者then function fn test 非同步請求成功 test 非同步請求失敗 還可以這樣 test 測試非同步請求 丟擲異常 ret...