だから私のコードは次のようになります。モザテストにスタブ/モックfsを使用させる現実的な方法は何ですか?ディスクにアクセスせずに関数をテストできますか?
import FsAsyncFactory from '../fs/FsAsyncFactory'
import ObjectHelper from '../utils/ObjectHelper'
import Config from './Config'
export class ConfigHelper {
// this is the function under test
public static async primeCacheObj(): Promise<void> {
const configFileObj: any = await ConfigHelper.getConfigFileObj()
}
private static configCacheObj: Config = null
private static async getConfigFileObj(): Promise<any> {
const fsAsync: any = FsAsyncFactory.getFsAsync()
const fileContents: string = await fsAsync.readFileAsync('./config/hubnodeConfig.json')
return JSON.parse(fileContents)
}
}
export default ConfigHelper
実際にディスクを打つからそれを停止する私のユニットテストコードを許可するための最良の方法は何ですか?
InversifyJSのようなものを使用して依存性注入を許可するべきですか?私は、アプリケーションが正常に実行されているときに "デフォルト"を設定し、テストでそれらのデフォルトを "上書き"するinitスクリプトを持っていますか?
ねえ!応答していただきありがとうございます!私はあなたのDIソリューションを試してみましたが、それを稼働させることができませんでした - 私はマシンにいるときに再試行します。ところで、それはビジネスを見ているので、私はそれが動作することを見て興奮しています!乾杯。 –
Hmm ..私はあなたの提案に従ってきましたが、 '式として呼び出されたときにプロパティデコレータの署名を解決できませんでした' @ inject'のTSエラーが発生しました。 'import 'reflect-metadata' 'は私のindex.tsファイルにあり、これはConfigHelperのインポートです。' inject {inject、injectable} 'から 'inversify'' これを使ってinversifyをインストールしました:' npm installは反映メタデータを保存します - セーブ ' これはプロジェクトです:https://github.com/adamdry/node-di-mocha-test アイデア?ありがとう! –
こんにちは、申し訳ありませんが、ここでコードを書いていますが、コンパイルしたり実行したりしていません。問題は '@inject(" FsAsync ")の代わりに' @ inject'をタイプしたということです。私が言ったように、私はコードをコンパイルしていないので多分エラーがありますが、プロジェクトのドキュメントをチェックすると何がうまくいかなかったのか分かるはずです:https://github.com/inversify/InversifyJS/blob/master/README .md#the-basics –