Javascript 编写一个单元测试,用于在NodeJS中搜索记录并对记录进行排序

Javascript 编写一个单元测试,用于在NodeJS中搜索记录并对记录进行排序,javascript,node.js,unit-testing,mocha.js,feathersjs,Javascript,Node.js,Unit Testing,Mocha.js,Feathersjs,刚刚开始编写单元测试,只是想问问下面的示例代码编写单元测试的示例是什么,比如何时使用断言?如何在下面的代码中测试过滤器?非常感谢。我在大学考试中用摩卡咖啡 #当前单元测试代码 ..... it('load the hook', () => { assert.ok(search, 'Load the hook'); }); it('searches for record and sort', async () => {

刚刚开始编写单元测试,只是想问问下面的示例代码编写单元测试的示例是什么,比如何时使用断言?如何在下面的代码中测试过滤器?非常感谢。我在大学考试中用摩卡咖啡

#当前单元测试代码

.....
      it('load the hook', () => {
        assert.ok(search, 'Load the hook');
      });
    
      it('searches for record and sort', async () => {
    
        const search_key = "Rajesh"
    
        const people = await People.find({
          query: {
            $limit: 25,
            $skip: 0,
            $sort: {
              'people': 1,
            },
            $or: [{
              name: {
                $like: search_key,
              },
            }],
          },
        });
      });

正如我们所讨论的,我添加了用于按名称和排序检查过滤器的测试用例。对于排序,您可以使用chai排序软件包:
npm安装chai-sorted
。您需要根据下面的注释对代码进行一些调整。希望能有所帮助

it('searches for record and sort', async () => {
    const search_key = "Rajesh";
    const limit = 25;
    //you will need to have `data` variable and link `search_key` and `limit` with it somehow
    const people = await search_data()(data);
    if (people) {
      //length must be less than or equal to `limit`
      expect(people.length).to.be.at.most(limit);

      // check sorting by name. you can change it as descendingBy if you need
      expect(people).to.be.ascendingBy("name");

      people.forEach(person => { 
        //checking filter for name
        expect(person.name).to.have.string(search_key);
      });
    }        
});

这里的
搜索\u数据
方法的目的是什么?据我所知,您正在单元测试中使用mongoose,并在
搜索\u数据中使用sequelizemethod@Jumshud是的,两个人都工作了。我已经在我的另一个单元上试过了搜索数据是methodSo,仅当
people
array按预期顺序通过
search\u key
过滤时,您才需要测试,或者您还想为
search\u data
方法编写测试?@Jumshud是否该测试应该与search\u data方法具有相同的功能?注意:单元测试应该是隔离/模拟的,不应该与DB对话,全球范围。为此,我们进行了集成测试。为了模拟单元测试中的方法,您可以使用
sinonjs
库:为什么不允许与db sir对话?\@MarkLatin,因为单元测试的性质。它应该在没有依赖项的情况下测试软件单元/组件。有集成测试来测试几个模块/单元。你可以在谷歌上搜索测试金字塔。下面是关于单元测试最佳实践的一些信息:功能测试如何?