相关疑难解决方法(0)

使用sinon使用必需的参数声明特定的存根调用

假设您正在测试一个函数,该函数将使用不同的参数多次调用依赖项:

var sut = {
    ImportantFunction: function(dependency){
        dependency("a", 1);
        dependency("b", 2);
    }
};
Run Code Online (Sandbox Code Playgroud)

使用QUnit + Sinon 并假设调用的顺序并不重要,我可以编写以下测试,确保函数按预期调用依赖项:

test("dependency was called as expected", function () {
    var dependencyStub = sinon.stub();

    sut.ImportantFunction(dependencyStub);

    ok(dependencyStub.calledTwice, "dependency was called twice");            
    sinon.assert.calledWith(dependencyStub, "a", 1);
    sinon.assert.calledWith(dependencyStub, "b", 2);
});
Run Code Online (Sandbox Code Playgroud)

但是,如果订单很重要并且我希望测试将其考虑在内,该怎么办?使用QUnit + Sinon编写此类测试的最佳方法是什么?

我使用了以下方法,但是我正在丢失由sinon断言提供的描述性失败消息(显示预期值和实际值).为此,我只是手动添加了一些描述性消息,但它没有使用具有预期值和实际值的失败消息(并且必须手动维护).

ok(dependencyStub.firstCall.calledWith("a", 1), "dependency called with expected args 'a', 1");
ok(dependencyStub.secondCall.calledWith("b", 2), "dependency called with expected args 'b', 2");
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以sinon.assert.calledWith像第一次或第二次呼叫那样使用特定呼叫的断言?

这个小提琴的样本设置

unit-testing qunit sinon

3
推荐指数
2
解决办法
5749
查看次数

标签 统计

qunit ×1

sinon ×1

unit-testing ×1