- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是被测试的函数:
const delimitedBinary = /^(?:[01]{8} ){3,}$/gm;
const nonDelimitedBinary = /^(?:[01]{8}){3,}$/gm;
const byteRegex = /[01]{8}/gm;
function decode(string) {
string = string.trim();
let bytes;
if (delimitedBinary.test(string + ' ')) {
bytes = (string + ' ').match(byteRegex);
} else if(nonDelimitedBinary.test(string)) {
bytes = string.match(byteRegex);
}
if (bytes) {
return decodeBytes(bytes);
}
return '';
}
function decodeBytes(bytes) {
return utf.getStringFromBytes(bytes.map(byte => parseInt(byte, 2)));
}
我在 test/tests.js
中有一些测试。以下是摘录:
test('Decodes binary on separate line', t => {
t.is(app.decode('text \n01110000 01100001 01110011 01110011'), 'pass');
});
test('Decodes emojis', t => {
t.is(app.decode('11110000 10011111 10001110 10001001'), '🎉');
});
第一个测试失败。将 console.log()
添加到第一个测试中作为
test('Decodes binary on separate line', t => {
console.log(app.decode('text \n01110000 01100001 01110011 01110011'));
t.is(app.decode('text \n01110000 01100001 01110011 01110011'), 'pass');
});
第一个测试现在通过了,第二个测试失败了。在向第二个测试添加 console.log()
语句时,
test('Decodes emojis', t => {
console.log(app.decode('11110000 10011111 10001110 10001001'));
t.is(app.decode('11110000 10011111 10001110 10001001'), '🎉');
});
...两个测试都通过了。
我确定我正在做一些愚蠢的事情或者错过了一些重要的事情。我已经浏览了 ava 的常见陷阱文档,但找不到任何相关内容。
最佳答案
测试用例工作正常。问题是,decode
不是纯粹的,每次调用它都会返回不同的结果,并且只有在第二次调用时才返回正确的结果。所以如果之前加个console.log,结果是对的,否则就是false:
console.log(
decode('text \n01110000 01100001 01110011 01110011'),
decode('text \n01110000 01100001 01110011 01110011')
);
但为什么会这样呢?正如 docs 中所述
As with exec() (or in combination with it), test() called multiple times on the same global regular expression instance will advance past the previous match.
正则表达式是有状态的,只要您对其调用 .test()
就会更改其状态,因此会产生不同的结果。
关于javascript - 失败的测试通过添加 console.log 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51100427/
已经有几个关于捕获或重定向 console.log 的问题: redirect Javascript syntax errors and console.log to somewhere else C
console.log(String(console.log('Not undefined')) === 'undefined'); console.log(String(console.log('N
我知道这是一个新手错误,但我不知道如何修复它。 public static void main (String args[]){ Console kitty = System.console(); S
我正在使用 Visual Studio 2015。 我试图打印一些语句只是为了跟踪一个非常长时间运行的测试。当使用 VSTest.Console 和/Logger:trx 时,调试输出(无论我们使用
这个问题在这里已经有了答案: Accessing console and devtools of extension's background.js (8 个回答) 5年前关闭。 我的 Chrome
我在括号中收到此错误。 我想强调一个事实,这是我第二次打开 JS 文件。 正如我强调的那样,我还想强调一个事实,即我不知道 Eslint 和 node.js 是什么。 StackOverflow 和其
我按照文档中的描述安装了 Drupal Console Launcher: curl https://drupalconsole.com/installer -L -o drupal.phar mv
Console.WriteLine() 和有什么区别和Trace.WriteLine() ? 最佳答案 从“调试”的角度来看这些。 我们开始使用 Console.WriteLine() 进行调试 后来
我一直在尝试连接到 serial console of a Raspberry Pi 3 with Android Things使用USB to TTL cable从我的 Linux (Ubuntu)
namespace Pro { class ErrorLog { public ErrorLog(RenderWindow app) {
以下代码是一个众所周知的示例,用于显示调试版本和发布版本之间的区别: using System; using System.Threading; public static class Program
if (open_date) { open_date = get_date_from_string(open_date); window.console && cons
在 Xcode 中工作时,我通常只为控制台打开一个单独的窗口,以便我可以看到尽可能多的输出行。我今天刚刚更新到 Xcode 12,在更新之前,您可以将编辑器 Pane 和控制台 Pane 之间的分隔线
在 Google Play Console 上,在所有应用程序的第一页,它会显示已安装的受众和用户获取。 我知道已安装的受众是在他们的设备上安装我的应用程序的受众。但什么是用户获取?通常,用户获取的数
Qt Quick uses qDebug执行日志记录,其中标准 Javascript 日志记录方法映射到 Qt 日志类型 console.log() -> qDebug() console.deb
Qt Quick uses qDebug执行日志记录,其中标准 Javascript 日志记录方法映射到 Qt 日志类型 console.log() -> qDebug() console.deb
我有以下代码: bool loop = true; LongbowWorkerThread Worker = new LongbowWorkerThread(); Th
我遇到了这两个 API,用于在 C# 的简单控制台应用程序中读取用户的输入: System.Console.ReadLine() System.Console.In.ReadLine() 这是一个我试
我是编程和 js 的新手,我正在尝试学习 javascript 的关键。 var obj1 = { name: 'rawn', fn: function() { con
using System; namespace ConsoleApplication1 { class Program { static void Main(strin
我是一名优秀的程序员,十分优秀!