jasmine 2.0 async assignin变量

时间:2014-02-19 19:24:54

标签: javascript node.js jasmine jasmine-node

我想将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()场景可以访问变量。我现在总是和'未定义'一样。最终我将运行一些异步函数来设置一些变量,然后其余的测试测试那些变量,文件等等。

1 个答案:

答案 0 :(得分:0)

您忽略了javascript基本范围规则,这会根据函数上下文进行更改。此外,如果make_valid_detailed是异步的,则您的2个变量将不会被定义,因为2 expect函数将在它之前执行。

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();
    });


});

});