【问题标题】:How to Test a function with Jest and React如何使用 Jest 和 React 测试函数
【发布时间】:2019-07-22 11:50:13
【问题描述】:

我是 jest 和 react 的新手,我需要为这个函数编写一个单元测试,我真的试图理解文档,但我很难理解如何准确地模拟这个函数?

function desc(a, b, orderBy) {
if (b[orderBy] < a[orderBy]) {
    return -1;
}
if (b[orderBy] > a[orderBy]) {
    return 1;
}
return 0;
}

下面也是我的笑话测试,它通过但没有断言或行覆盖

describe('Contract Table Ordering', () => {
 it('orders by desc', () => {
     contract.desc.mockImplementation(async () => { return (a, b, orderBy) 
=> (a[orderBy] > b[orderBy]) - (a[orderBy] <  b[orderBy]); });
 });
});

【问题讨论】:

  • 为什么要模拟它?如果你嘲笑它,那么你就没有测试它。似乎您更想用数据调用它,然后检查数据是否符合您的期望。

标签: javascript node.js reactjs jestjs


【解决方案1】:

如果您需要对对象列表/数组进行排序,您应该执行以下操作:

请注意,您的 js 文件 (sortFn.js) 和单元测试文件 (sortFn.js) 应该在同一个文件夹中。

//in your js (sortFn.js) file: 
const sortTable = orderBy => {
    return function(a, b) {
        if (a[orderBy] > b[orderBy]) {
            return -1;
        } else if (a[orderBy] < b[orderBy]) {
            return 1;
        }
        return 0;
    };
}
export default sortTable;


//In your unit-test file (sortFn.test.js): 
import sortTable from  './sortFn';

describe('Contract Table Ordering', () => {
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}];

it('orders by desc', () => {
   const sortResult =  originalArray.sort(sortTable('age'));
   expect(sortResult).toEqual(expectedArray);
});
});

【讨论】:

  • 它们是否应该在同一个文件夹中取决于您的项目组织(我个人不喜欢将它们放在同一个文件夹中,这是 Java/Rails/Elixir 时代的遗留物)。
  • @DaveNewton 我同意你的观点,但这只是一个简单的例子。
【解决方案2】:

找到了一个解决方案,正如 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);
});

【讨论】:

    猜你喜欢
    • 2018-10-31
    • 1970-01-01
    • 1970-01-01
    • 2018-10-20
    • 2019-04-22
    • 1970-01-01
    • 1970-01-01
    • 2021-06-04
    • 2020-05-03
    相关资源
    最近更新 更多