javascript - 为什么 ava 无法比较对象列表和对象文字列表?

标签 javascript unit-testing assertions ava deepequals

我正在使用deepEqual断言,但我的测试失败

测试

test('should return list of printers', t => {
    const clipboard = filter.asClipboardContent(scan);

    t.is(clipboard, [
        {hostname: '10.0.1.1', port: '9100', description: 'HP 5020-NL'},
        {hostname: '10.0.1.8', port: '9100', description: 'Brother 4002'}
    ]);
}

失败输出

 t.deepEqual(clipboard, [{ hostname: '10.0.1.1', port: '9100', description: 'HP 5020-NL' }, { hostname: '10.0.1.8', port: '9100', description: 'Brother 4002' }])
              |                                                                                                                                                   
              [Object{hostname:"10.0.1.1",port:9100,description:"HP 5020-NL"},Object{hostname:"10.0.1.8",port:9100,description:"Brother 4002"}]                   

问题

如何解决这个问题?

最佳答案

我遇到了类型问题,port 值一侧是 string,另一侧是 integer

test('should return list of printers', t => {
    const expected = [
        {hostname: '10.0.1.1', port: 9100, description: 'HP 5020-NL'},
        {hostname: '10.0.1.8', port: 9100, description: 'Brother 4002'}
    ];

    const clipboard = filter.asClipboardContent(scan);

    t.deepEqual(clipboard, expected);
});

在这种情况下,两个对象是相同的。

关于javascript - 为什么 ava 无法比较对象列表和对象文字列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39534632/

相关文章:

unit-testing - 有没有办法在给定的时间后使单元/集成测试失败?

c# - 美元对象的复杂性

javascript - 正则表达式捕获html标签中的单词

javascript - 文本框应仅允许十六进制十进制值

javascript - 对 Flash 的外部接口(interface)调用在 IE9 中不起作用

c++ - 如果私有(private)变量已更改,如何进行单元测试

unit-testing - 我怎样才能测试变化的东西?

php - 断言 var 是 phpunit 中没有特定字符的非空字符串

java - 哪些是Java的系统类?

javascript - 如何使表单在​​ JavaScript 页面加载时自动提交?