【问题标题】:AVA testing gives undefined when importing to test.js导入到 test.js 时 AVA 测试给出未定义
【发布时间】:2017-01-30 06:35:06
【问题描述】:

我正在使用 AVA 作为节点和 javascript 的测试。

在 test.js 上

import test from 'ava';
import {valid, output, input} from './dependency.js';

test("Input is not a Empty String", t => {
    t.not(input, ''); t.pass();
})

test("Correct output", t => {
    var testInput = ['KittenService: CameCaser', 'CamelCaser: '];
    var expected = 'CamelCaser, KittenService';
    var actual = output;
    t.deepEqual(actual, expected, "Result did match");
})

在第一次测试时它通过了,即使我的

var 输入 = '';

在我的第二次测试中它也抛出了:

t.deepEqual(actual, expected, "Result did match")
              |       |
              |       "CamelCaser, KittenService"
              undefined

依赖.js

module.exports = {valid, input, output};
var input = '';
var output = [];

我在函数之后确实有输出值,但似乎在 test.js 上它不从依赖项测试中获取输入或输出值。 我不确定如何解决这个问题。

【问题讨论】:

    标签: javascript node.js testing ava


    【解决方案1】:

    AVA 使用 Babel 编译导入语句。由于 dependency.js 不是使用 Babel 创建的,因此在导入时 module.exports 对象被视为 默认 导出。

    改为这样做:

    import test from 'ava';
    import dependency from './dependency.js';
    
    const {valid, output, input} = dependency;
    
    test("Input is not a Empty String", t => {
        t.not(input, '');
    })
    
    test("Correct output", t => {
        var testInput = ['KittenService: CameCaser', 'CamelCaser: '];
        var expected = 'CamelCaser, KittenService';
        var actual = output;
        t.deepEqual(actual, expected, "Result did match");
    })
    

    附:你通常不需要t.pass()

    【讨论】:

    • 嘿,马克,我更改了代码,它给了我相同的结果。
    • 我的 package.json 代码{ "name": "assessment", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "ava" }, "author": "", "license": "ISC", "devDependencies": { "ava": "^0.17.0" } }
    • 发现我必须将变量放入依赖函数中,然后您的方法才有效。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-05
    • 2019-09-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多