6

RequireJS モジュールがあり、アプリにインスタンスが 1 つしかないとします (たとえば、非同期処理を実行し、コールバックが渡されたとします)。

// modules/myModule
define(function(){
    var module = function(){
        var self = this;
        self.runSomething(){
            console.log("hello world");
        };
    };

    return new module();
});

このモジュールのインスタンスを単体テストしたいのですが、代わりにこの方法でモジュールを構築していることに気付きました。

// modules/myModule
define(function(){
    return function(){
        var self = this;
        self.runRouting(){
            console.log("hello world");
        };
    };
});

// modules/myModuleInstance
define(["modules/myModule"], function(myModule){
    return new myModule();
});

これにより、状態が添付されていないものが提供され、単体テストから突き出すことができるため、単体テストでは を参照することはなく、テストごとに毎回構築するmodules/myModuleInstanceのみを参照します。modules/myModule次に、アプリは を参照しmodules/myModuleInstanceます。

これはアンチパターンのように感じます。そこに余分な「モジュールインスタンス」部分があるのは嫌いです。私は単体テストでセットアップとティアダウンの方法について知っており、この方法でインスタンスを維持することができましたが、大規模なシングルトンを単体テストしようとすると C# で何が起こるかを目の当たりにして、単体テスト間で状態をいじることは、特に避けたいことです。動的言語で。

この場合、人々は通常何をしますか?

4

1 に答える 1