如何测试/模拟以下内容:

时间:2019-01-28 15:06:51

标签: javascript reactjs unit-testing jestjs

这是我拥有的 file.js 我该如何模拟以下内容并执行单元测试: 谢谢

var dataset = document.getElementById('test') ? 
document.getElementById('test').dataset : {};
export const SERVICE_URL = 'http://localhost:/';

将JEST / EZNYME用于REACTJS-类似于以下内容: file.test.js

const mockTrue = {SERVICE_URL};

describe ( " Service URL ", () =>{
 it ( ' should output ', () => {
expect(mockTrue).toBeCalled('http://localhost:xxxxxxx/');
});

2 个答案:

答案 0 :(得分:0)

尝试此操作,这应该断言您的SERVICE_URL包含您期望的值:

describe ( " Service URL ", () =>{
    it ( ' should output ', () => {
        expect(SERVICE_URL).toBe('http://localhost:/');
    });
});

答案 1 :(得分:0)

测试数据集

使用当前实现,您将无法测试三元条件的两个分支。

这是因为数据集的值将在导入后立即解析。以后无法执行操作以添加带有id=test的元素并希望该值得到更新。

为了获得100%的覆盖率,您必须导出一个函数:

export function getDataSet(){
  return document.getElementById('test') 
    ? document.getElementById('test').dataset 
    : {};
} 

这使得它可以测试。

测试SERVICE_URL

正如其他人提到的那样,您做不到什么比

expect(SERVICE_URL).toBe('http://localhost:/');

测试常量值只是为了进行测试。除了确保没有“您确定吗?”不会修改此常量之外。标志,这不会带来任何价值。

一些评论

实现100%的测试覆盖率是一个难题,它导致了脆性测试的发展。这种纯粹主义使您无益。

如果您确实希望100%达到这一目标,最好从测试覆盖范围中删除伪代码。