Javascript 如何使用Jest和React测试函数
我不太会开玩笑和做出反应,我需要为这个函数编写一个单元测试,我真的试图理解文档,但我很难理解如何准确地模拟这个函数Javascript 如何使用Jest和React测试函数,javascript,node.js,reactjs,jestjs,Javascript,Node.js,Reactjs,Jestjs,我不太会开玩笑和做出反应,我需要为这个函数编写一个单元测试,我真的试图理解文档,但我很难理解如何准确地模拟这个函数 function desc(a, b, orderBy) { if (b[orderBy] < a[orderBy]) { return -1; } if (b[orderBy] > a[orderBy]) { return 1; } return 0; } 函数描述(a、b、orderBy){ if(b[orderBy]a[orderBy]){ 返回
function desc(a, b, orderBy) {
if (b[orderBy] < a[orderBy]) {
return -1;
}
if (b[orderBy] > a[orderBy]) {
return 1;
}
return 0;
}
函数描述(a、b、orderBy){
if(b[orderBy]a[orderBy]){
返回1;
}
返回0;
}
下面是我的jest测试,它通过了,但没有断言或行覆盖
describe('Contract Table Ordering', () => {
it('orders by desc', () => {
contract.desc.mockImplementation(async () => { return (a, b, orderBy)
=> (a[orderBy] > b[orderBy]) - (a[orderBy] < b[orderBy]); });
});
});
description('合同表排序',()=>{
它('按描述订购',()=>{
contract.desc.mockImplementation(异步()=>{return(a、b、orderBy)
=>(a[orderBy]>b[orderBy])-(a[orderBy]
如果需要对对象列表/数组进行排序,应执行以下操作:
请注意,js文件(sortFn.js)和单元测试文件(sortFn.js)应该位于同一个文件夹中
//在js(sortFn.js)文件中:
const sortTable=orderBy=>{
返回函数(a,b){
如果(a[orderBy]>b[orderBy]){
返回-1;
}如果(a[orderBy]{
const originalArray=[{name:'ab',age:19},{name:'xz',age:26},{name:'ab',age:14},{name:'cw',age:22}];
const expectedArray=[{name:'xz',age:26},{name:'cw',age:22},{name:'ab',age:19},{name:'ab',age:14}];
它('按描述订购',()=>{
const sortResult=originalArray.sort(sortTable('age'));
expect(sortResult)、toEqual(expectedArray);
});
});代码>找到了一个解决方案,正如Dave所说,我需要用数据调用它,然后检查它是否匹配
describe('Tests for the descendingOrderBy function', () => {
it('should reverse the full and part contracts', () => {
const ordering = desc(fullObject, partContract, 'title');
expect(ordering).toEqual(-1);
});
你为什么要嘲笑它?如果你嘲笑它,那么你不是在测试它。看起来你更想用数据来调用它,然后检查数据是否符合你的期望。它们是否应该在同一个文件夹中取决于你的项目组织(我个人不喜欢它们在同一个文件夹中,这是Java/Rails/Elixir时代的遗留问题)。@DaveNewton我同意你的观点,但这只是一个简单的例子。