2017-01-30 9 views
0

私はノードとjavascriptでのテストとしてAVAを使用しています。それも私のAVAテストでは、test.jsにインポートするときに未定義となります

VAR入力= '' かかわら渡す最初のテストで

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

test.jsで

。 dependency.js

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

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

を私は関数の後に出力の値を持っていますが、test.jsに、それはdoesnのようにそれはそう:それはスロー私の第二の試験でも

依存性テストから入力または出力値を取ることはできません。 この問題を解決する方法が正確にはわかりません。

答えて

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

P.S.を通常、t.pass()は必要ありません。

+0

私はコードを変更しましたが、同じ結果が出ています。 – Yh1234

+0

マイpackage.jsonコード '{ "名前": "アセスメント"、 "バージョン": "1.0.0"、 "説明": ""、 "メイン": "index.js"、 "スクリプト":{ "テスト": "AVA" }、 "著者": ""、 "ライセンス": "ISC"、 "devDependencies":{ "AVA": "^ 0.17.0" } } – Yh1234

+0

私は自分の変数を依存関数の中に入れなければならなかったので、あなたのメソッドはうまくいきました。 – Yh1234

関連する問題