导入到 test.js 时 AVA 测试给出未定义

AVA testing gives undefined when importing to test.js

我正在使用 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 input = '';

同样在我的第二次测试中它抛出:

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

在 dependency.js

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

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

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

改为这样做:

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");
})

P.S。你通常不需要 t.pass().