2017-01-02 25 views
1

ES6モジュールをインポートすると、そのモジュールの読み込み専用ビューが表示されるので、それを嘲笑するとエラー'x' is read-onlyが生成されます。これにより、依存関係を解読してテスト中のコードを分離することができなくなりました。私はこれを回避する方法がわかりません。読み込まれたモジュールが読み込み専用の場合、どのようにES6の読み込みモジュールをモックできますか?

http://exploringjs.com/es6/ch_modules.html

*私はPlunkerを投げているだろうが、私はそれがimport文を認識するために得ることができなかった、とJSFiddleは、エクスポートされたモジュールのためであったであろう他のファイルを、許可していないようです。

+0

あなたの拒食症の注射を検討しましたか?あなたは輸入品を嘲笑う必要はありません。 –

+0

もしそうでなければ、すでに答えがあります:http://stackoverflow.com/questions/35240469/how-to-mock-the-imports-of-an-es6-module –

答えて

0

私の解決方法は、エクスポート方法を変更することでした。個々のプロパティの代わりにプロパティのオブジェクトをエクスポートすると、エラーは発生しません。これは、Object.freezeが1つのレベルの深さしかないために、エクスポートされたオブジェクトがフリーズされているため、子オブジェクトではないためです。

import {ua} from './index';

./index.js私がオーバーライドしたい小道具で、名前付きオブジェクトをエクスポートします。

export const ua = { 
 
    deleteUser, 
 
    loadUsers 
 
};

をこれは私のテストコードに次のように許可:

ua.loadUsers = function() { 
 
      expect(delUspy.calledOnce).toBe(true); 
 
      expect(loadUspy.callCount).toEqual(1); 
 
      done(); 
 
     };

...しかし、ua = {}が凍結されたために失敗しました。

回答は、小道具のオブジェクトをエクスポートし、個々のプロパティのインポートを避けることです。

関連する問題