Node.js 以前调用的Sinon spy函数未按预期工作
我希望在使用特定参数存根axios客户端调用时,能够断言它们已在域逻辑/流中以特定顺序被调用。但测试总是通过的 例如,axiosPostStub.withArgs(…args1)和axiosPostStub.withArgs(…args2)是两个不同的存根,只有当域逻辑将args1和args2传递给axios客户端的post函数时,才会调用它们。到目前为止还不错 我想测试的是,这两个存根被一个接一个地精确地调用。例如: withArgs(…args1)是第一个在测试代码中被调用的。第二个是axiosPostStub.withArgs(…args2) 一旦我将这些存根保存在一个变量中,并尝试通过sinon的callOrder或stub1.calledBefore(stub2)来断言它们,测试就通过了,不管我是否更改了执行顺序。我错过了什么?还是有什么没有记录的东西 干杯 这里有一个我正在使用的代码示例:Node.js 以前调用的Sinon spy函数未按预期工作,node.js,testing,sinon,Node.js,Testing,Sinon,我希望在使用特定参数存根axios客户端调用时,能够断言它们已在域逻辑/流中以特定顺序被调用。但测试总是通过的 例如,axiosPostStub.withArgs(…args1)和axiosPostStub.withArgs(…args2)是两个不同的存根,只有当域逻辑将args1和args2传递给axios客户端的post函数时,才会调用它们。到目前为止还不错 我想测试的是,这两个存根被一个接一个地精确地调用。例如: withArgs(…args1)是第一个在测试代码中被调用的。第二个是axi
await waitForPredicateToBecomeTrue(
() =>
axiosPostStub.withArgs(
`url`,
{
Property1: sinon.match.any,
Property2: 'Files',
Property3: 'S',
SomeId: mockId,
Property5: sinon.match.any,
},
{ headers: { 'Content-Type': 'application/json' } },
).calledBefore(anotherStubWithArgsLikeTheUpperOne),
)
因此,这里的“waitForPredicateToBecomeTrue”是一个帮助函数,用于等待调用完成true,然后继续下面的测试中的其他行。如果它抛出一个错误,这意味着存根对象没有用提供的参数调用,并且它没有通过测试,这在这里相当于一个expect。
我在这里关心的是,想象一下在sinon的函数之前调用的中有另一个块代码,我也会传入一个axios存根,但使用不同的url和对象。这基本上是axios单独的post调用,但顺序不同。它基本上通过了,不管我是否改变了被测系统的执行顺序。你能提供一个最小的、可复制的、完整的代码吗?