javascript - 即使 str1 不等于 str2,expect(str1).to.equal(str2) 也会通过
问题描述
我需要颠倒非常特定格式的 json 文件中“对象”的顺序。
我写了一个测试来比较预期结果和实际结果。
expect(result).to.equal(expectedResult);
即使它们具有不同的值,测试也通过了。我通过将两个变量都记录到控制台来确认这一点。为什么会这样?
字符串结果的值
"result": [
{
"courses_dept": "math",
"courses_avg": 77.00
},
{
"courses_dept": "epse",
"courses_avg": 88.50
},
{
"courses_dept": "math",
"courses_avg": 93.00
},
{
"courses_dept": "epse",
"courses_avg": 92.19
}
]
字符串预期结果的值:
"result": [
{
"courses_dept": "epse",
"courses_avg": 92.19
},
{
"courses_dept": "math",
"courses_avg": 93.00
},
{
"courses_dept": "epse",
"courses_avg": 88.50
},
{
"courses_dept": "math",
"courses_avg": 77.00
}
]
}
这是代码。
describe("reversify", () => {
it("Should reverse file", ()=> {
let result = "";
let expectedResult = "";
try{
let resultPromise = reversify("./test/json_files/inputs/t1.json");
let expectedResultPromise = readJsonFile("./test/json_files/outputs/t1.json");
//AS OF NOW THIS JUST READS THE FILE, HENCE TEST SHOULD FAIL
resultPromise.then((data) =>{
console.log('Result is: ', data);
result = JSON.stringify(data);
});
expectedResultPromise.then(data => {
expectedResult = JSON.stringify(data);
console.log("Expected Result is: ",data);
});
} catch(err) {
throw (err);
} finally {
expect(result).to.equal(expectedResult);
}
});
});
解决方案
您的expect
语句将在执行承诺之前执行,使两者的值result
等于expectedResult
执行""
时的值。您可以使用await
等待承诺得到解决。
推荐阅读
- python - “Python 已停止工作” - Windows 10 上的 openalpr
- ios - RxSwift。依次执行单独的 Observables
- python - Osmnx:如何使 plot_shape() 在 pyplot 子图中工作?
- vba - 根据每行(而不是单个单元格)上的下拉多项选择隐藏一行(在列表中)
- arm - 使用STM32 Timer->GPIO传输处理WS2812B LED时序数据
- sql-server - 将计算字段/计算列中版本号最高的记录标记为“真”,其余为假
- api - 如何为 Azure AD 上托管的 WebAPI 生成令牌?
- angular - 我的 ngIf Else 在 Angular 6 中没有按预期工作
- javascript - 直接从节点读取系统声音
- node.js - 无法将对象推送到 Mongodb 集合中的数组中,但插入了 Id