如何在Jest中的Worker的默认函数中测试函数?

时间:2019-07-30 14:38:35

标签: javascript testing jestjs enzyme web-worker

我有一个Javascript文件@Service public class BrandsService { public List<Brand> find() { return repository.findAll(PageRequest.of(0, 10, Sort.by(Sort.Direction.ASC, "id")), EntityGraphUtils.fromAttributePaths("vehicles")).getContent(); } } ,其格式如下:

sortWorker.js

我正在尝试在Jest中单独测试export default () => { function sortData (data) { //some computation here return sortedData } self.addEventListener ("message", e => { postMessage(sortData(e.data)) }) } 函数,但是我正在努力实现这一点。由于这是一个工作文件,因此无法将sortData()移到sortData范围之外。 有人可以帮我吗?谢谢!

1 个答案:

答案 0 :(得分:0)

尝试返回您的函数,以便可以在测试中直接调用它:

export default () => {

    const sortData = function (data) {
        //some computation here

        return sortedData
    }

    self.addEventListener ("message", e => {
        postMessage(sortData(e.data))
    })

    return { sortData };
}

因此,在测试中,您可以调用sortData(data)并声明其结果。


编辑:OP要求将其包含在结构中。你可以这样写:

sort.js

export default () => {

  const sortData = function (data) {
    return data.sort();
  }

  return { sortData };
}

sort.test.js

import sort from './sort';

const sortFn = sort().sortData;

const resp = sortFn([4, 3, 2, 1]);

console.log(resp); // [1, 2, 3, 4]