首页 > 解决方案 > 如何在 JEST 测试类中使用布尔值

问题描述

我在文本文件中使用 jest 进行了非常简单的搜索,但我的 jest 测试从未通过,我不确定我在这里做错了什么,我也尝试过toBe,但我仍然得到同样的错误。

这是我的代码:

const fs = require('fs');
const path = require('path');

var isFound = false; 

test("searching in file", () => {
// actual test
fs.readFile(__dirname+'/files/test.txt', "utf8", (err, data) => {

    if (err) throw err;

    const fileStream = data.toLowerCase();
    if(fileStream.includes('awesome')){
        //console.log('found in file');
        isFound = true;
    } else {
        isFound = false;
        //console.log('not found in file');
    } 
})
    expect(isFound).toEqual(true); 
});

错误:

18 | })

  19 |         //expect(found).toEqual(true);

> 20 |         expect(isFound).toEqual(true);

     |                         ^

  21 |  

  22 | 

  23 |   });

标签: jestjs

解决方案


试试fs.readFileSync。问题是您的测试是异步的,因此在expect读取文件之前发生。

此外,readFileSync正在返回一个流,您需要调用toString().

const fileStream  = fs.readFileSync(__dirname+'/files/test.txt').toString().toLowerCase();

推荐阅读