2

がある

  1. ActionManager.jsは、可能なすべてのテスト関数を含むファイル (ライブラリ) をフォルダーから読み取ります。

  2. WorkflowManager.jsは、必要なテスト (テスト ワークフロー) の説明を含むファイルを読み取ります。各ファイルには、アクションと引数の配列が含まれています。

  3. TestsRunner.jsは、ActionManager と WorkflowManager を必要とし、実行します。その後、各テスト ワークフローのアクション (Jasmine テストを実行) を引数付きで実行したいと考えています。

このプロセスを真剣に実行するにはどうすればよいですか?

私はランナーを次のように実装しようとしました:

  • describeブロックの前に require を呼び出すため、ジャスミンのテストはこの前に実行されます

  • require をbeforeEachに入れると、 beforeEach はit()を実行する直前に呼び出されます。そのため、フローの配列を要求して取得した直後にit()をループするフローの量を知っています。ただし、it()が実行されるときは、既に定義されているループの反復から既に呼び出されている必要があります。

  • メインの記述の下に初期化するために it() を使用してモック記述ブロックを配置しましたが、この場合、サイクル for() はフローの数量を 0 として取得し、この後、すべての記述が実行を開始し、数量が初期化されます

  • 両方の deribe を 1 つの else にラップしました -> deribeitの間のコード、describeと inner for cycle は実行されません。

これは、WorkflowManager のみを必要とし、反復ごとにコンソール出力を使用してワークフロー配列サイズをループするコードの一部です。

    var firstTime = true;
    beforeEach(function() {
        if (firstTime) {
            var flow = protractor.promise.controlFlow();
            flow.execute(function() {
                console.log("I'm beforeach part#1");
                path = require("path");
                testsPath = path.resolve("./e2e/tests/");
                //requiring WorkflowManager
                wfMng = require('./utils/WorkflowManager.js');
            }).then(function() {
                console.log("I'm beforeeach part#2");
                var workflowPath = path.resolve("./e2e/data/workflows/");
                //getting array of worklows
                wfs = wfMng.getAllWorkflows(workflowPath + '\\');
            }).then(function() {
                console.log("I'm beforeeach part#3");
                //console output of length of workflows array = 1 - is correct
                console.log("Length of array in before each after initing " + wfs.length); //LENGTH = 1
                firstTime = false;
            })
        }
    });


    describe("Describe for initialization", function() {
        it("It block for initialization", function() {
            expect(0).toEqual(0);
            console.log("Length in 1st describe: " + wfs.length); //LENGTH = 1
        });
    });

    describe("Core describe", function() {
        console.log("This console log doesn't executed!!!!");
        //CYCLE ISN'T EXECUTED - LENGTH = 0
        for (var workflowidx = 0, wlen = wfs.length; workflowidx < wlen; workflowidx += 1) {
            (function(widx) {
                console.log("Length in for cycle: " + wfs.length);
                describe("SBB" + widx, function() {
                    console.log("This console log doesn't executed!!!!");
                    it("My test" + widx, function() {
                        expect(2).toEqual(2);
                        console.log("Length in it func: " + wfs.length); //LENGTH = 1
                    });
                });
            })(workflowidx);
        };
    });

必要なアクションの配列と必要なワークフローを取得し、この直後にループ内のすべてのアクションを実行する方法の両方を処理する方法は?

どうにかしてジャスミンのスパイを使うべきですか?

Node.JS v0.10.30

分度器 v 1.0.0

4

0 に答える 0