量角器/ Jasmine2:异步测试“expect”被忽略,测试给出了错误的传递

时间:2015-12-01 18:16:30

标签: node.js jasmine async-await protractor

我目前正在使用Protractor和Jasmine 2来测试我的应用。我使用asyncawait来处理异步位。我正在进行基本上执行以下操作的测试:

it("should do asynchronous stuff", async(function (done) {
    var result = await(doSomeAsynchronousAction());

    expect(result.success).toBe(true);
    expect(result.message).toBe('');
    done();
}));

大部分时间这都按预期工作,但我有一个测试,其中“期望”的结果被忽略。我在每个期望中放置了一个断点,并且我验证了这两个都应该失败(result.success为false,result.message不是空字符串)。然而,该测试仍被报告为成功,并且未报告任何故障。有谁知道为什么?我甚至不确定从哪里开始。

更新:我已经确定这是由于我为Jasmine创建的客户包装器,但我不确定为什么会导致这种情况。这是相关的代码:

var oldIt = jasmine.getEnv().it;
global.rit = function () {
    var args = [arguments[0], arguments[1], 240000];
    var spec = oldIt.apply(null, args);
    specs[spec.result.fullName] = { spec: spec, essential: true };
    return spec;
};
jasmine.getEnv().it = function () {
    var spec = oldIt.apply(null, arguments);
    specs[spec.result.fullName] = { spec: spec, essential: false };
    return spec;
};

我需要收集此信息,以便稍后在我的自定义记者中使用。奇怪的是,虽然我修改了itrit做了非常类似的事情,但它们的行为并不相同。如果我使用it(使用我创建的包装器),期望会导致我的测试失败。如果我使用rit,失败的期望根本不会做任何事情。这有什么区别? rit仍在创建一个规范,因为我的代码正在运行,但它忽略了我的断言?

0 个答案:

没有答案