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,因为单元测试的性质。它应该在没有依赖项的情况下测试软件单元/组件。有集成测试来测试几个模块/单元。你可以在谷歌上搜索测试金字塔。下面是关于单元测试最佳实践的一些信息:功能测试如何?