如何使用 Fuse.js 依赖项测试功能

问题描述

我想为以下功能实现 .test 文件

import Fuse from 'fuse.js';
import data from '../dal/data';
async function search(searchedData) {
  // In case searched name is null
  if (!searchedData) {
    return [];
  }

  // load data
  const dataload = await data();
  // set options to filter data
  const options = {
    includeMatches: true,// Search in `name'
    keys: ['name'],};
  const fuse = new Fuse(dataload,options);
  const matchedList = fuse.search(searchedData)
    .map((element) => element.item);

  return { matchedList };
}

export default search;

fuse.js 怎么做,我应该实现一个模拟数据吗?

解决方法

Fuse.js 是基于传递给它的动态配置提供模糊搜索的库。有不同的库可用,例如 fuzzy-search

现在,问题是如何根据评论模拟类似库作为模糊搜索。 This 是如何开始构建自己的模糊搜索引擎的一个很好的例子,但要做到这一点,您需要了解模糊搜索是什么以及它是如何工作的。

现在,如果您想了解 Fuse.js 如何处理任何模拟数据。我可以添加一些可能有助于您与现有项目集成的代码。

模拟数据

// it could be of any type,I am using Array of objects
const mockData = [{
                   name : 'Jason Durham',age : 28,address : 'Newyork city,New York,USA'
                   },{
                   name : 'Jameson Durham',address : 'Cleveland,Ohio,{
                   name : 'Tintan Groofs',address : 'Ohio city,USA'
                   }]
const options = {
  includeScore: true,// the o/p will include the ranking based on weights
  keys: [
    {
      name: 'name',weight: 0.3        // what weightage you want this key in your search result
    },{
      name: 'address',weight: 0.7        // what weightage you want this key in your search result
    }
  ]
}

// Create a new instance of Fuse
const fuse = new Fuse(mockData,options)

// Now search for 'Man'
const result = fuse.search('nwyork');
console.log(result);

您可以查看 fuse.js 文档以了解如何进行搜索和配置。

您可以使用测试框架测试模糊搜索结果,前提是您知道预期值,但它会根据您的配置包含非常广泛的 o/p。到目前为止,Fuse.js 没有在他们的文档中提供直接的方法来检查它,但是你可以根据你获得的排名创建一个方法并为其创建一个阈值。这是我们使用 Fuse.js 测试搜索结果的方式,所有低于此阈值的结果都将被丢弃。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...