0

非同期関数が返すテスト ケースに 2 つの変数を設定したいと考えています。以前の試みでは、runs() と waitsFor() を使用していましたが、jasmine 2.0 の done() 機能を使用したいと考えています。私はこのようなことを試しました:

describe("Test", function() {

    it("makes a log file", function(done) {
        make_valid_detailed(1, 2, '2014-02-20', 'test.txt', location, function(error, returnCode, path) {
            this.lpath = path;
            this.status_code = returnCode;
        });
        expect(this.lpath).toBeDefined();
        expect(this.status_code).toBeDefined();
        done();
    });

});

後続のテストである it() シナリオで変数にアクセスできるようにしたいと思います。私は常に「未定義」としています。最終的には、いくつかの変数を設定するいくつかの非同期関数を実行し、残りのテストでそれらの変数やファイルなどをテストします。

4

1 に答える 1

0

JavaScript の基本的なスコープ ルールを無視しています。これは、関数のコンテキストに応じて変化します。さらに、make_valid_detailed が非同期の場合、2 つの変数はその前に実行されるため、2 つの変数は定義されません。

describe("Test", function() {

it("makes a log file", function(done) {
    make_valid_detailed(1, 2, '2014-02-20', 'test.txt', location, function(error, returnCode, path) {
       expect(path).toBeDefined();
       expect(returnCode).toBeDefined();
       done();
    });


});

});
于 2014-02-19T20:09:53.557 に答える