Chai/Node.js: Expect(value).to.be.NaN 问题
Chai/Node.js: Expect(value).to.be.NaN issue
我有这些表单字段需要用 chai expect 验证。它们都有效(我收到错误),除了需要字符的字段 - expect(value).to.be.NaN 不起作用...代码:
var inputs = [response.fname, response.surname,
response.age, response.password
];
for (var i = 0; i < inputs.length; i++) {
var stackErrors = validate(i);
console.log(stackErrors);
}
function validate(i) {
var fields = inputs[i];
try {
if (i == 0) {
expect(fields).to.be.Nan;
}
if (i == 1) {
expect(fields).to.be.Nan;
}
if (i == 2) {
expect(fields).not.to.be.NaN;
}
if (i == 3) {
expect(fields).to.have.length.above(6);
}
return "OK";
} catch (error) {
console.log(error);
return error;
}
}
但是如果像下面的示例一样测试字段,就在输入数组之后,我会得到预期的断言错误...:[=14=]
expect(inputs[0]).to.be.NaN;
为什么会这样?提前致谢
假设此代码:
Number.isNaN(NaN) // true
并且:
Number.isNaN(5) // false
我会做一个小的解决方法(只是为了让它更快),像这样:
expect(Number.isNaN(inputs[0])).to.be.eq(false);
更新:
我注意到您的代码中有 Nan,它与 NaN 不同。
我不确定它是如何实现的,但就链接而言,试试这个:
expect(undefined).to.be.eq.Nan
我认为在这种情况下你应该收到 true。
感谢@Lazyexpert 的提示(我注意到你的代码中有 Nan,它与 NaN 不同。),我找到了明显的解决方案......(实际上是区分大小写的问题)
try {
if (i == 0) {
expect(fields).to.be.NaN; //instead of Nan...
}
我有这些表单字段需要用 chai expect 验证。它们都有效(我收到错误),除了需要字符的字段 - expect(value).to.be.NaN 不起作用...代码:
var inputs = [response.fname, response.surname,
response.age, response.password
];
for (var i = 0; i < inputs.length; i++) {
var stackErrors = validate(i);
console.log(stackErrors);
}
function validate(i) {
var fields = inputs[i];
try {
if (i == 0) {
expect(fields).to.be.Nan;
}
if (i == 1) {
expect(fields).to.be.Nan;
}
if (i == 2) {
expect(fields).not.to.be.NaN;
}
if (i == 3) {
expect(fields).to.have.length.above(6);
}
return "OK";
} catch (error) {
console.log(error);
return error;
}
}
但是如果像下面的示例一样测试字段,就在输入数组之后,我会得到预期的断言错误...:[=14=]
expect(inputs[0]).to.be.NaN;
为什么会这样?提前致谢
假设此代码:
Number.isNaN(NaN) // true
并且:
Number.isNaN(5) // false
我会做一个小的解决方法(只是为了让它更快),像这样:
expect(Number.isNaN(inputs[0])).to.be.eq(false);
更新: 我注意到您的代码中有 Nan,它与 NaN 不同。
我不确定它是如何实现的,但就链接而言,试试这个:
expect(undefined).to.be.eq.Nan
我认为在这种情况下你应该收到 true。
感谢@Lazyexpert 的提示(我注意到你的代码中有 Nan,它与 NaN 不同。),我找到了明显的解决方案......(实际上是区分大小写的问题)
try {
if (i == 0) {
expect(fields).to.be.NaN; //instead of Nan...
}