Node.js 以前调用的Sinon spy函数未按预期工作

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

我希望在使用特定参数存根axios客户端调用时,能够断言它们已在域逻辑/流中以特定顺序被调用。但测试总是通过的

例如,axiosPostStub.withArgs(…args1)和axiosPostStub.withArgs(…args2)是两个不同的存根,只有当域逻辑将args1和args2传递给axios客户端的post函数时,才会调用它们。到目前为止还不错

我想测试的是,这两个存根被一个接一个地精确地调用。例如: withArgs(…args1)是第一个在测试代码中被调用的。第二个是axiosPostStub.withArgs(…args2)

一旦我将这些存根保存在一个变量中,并尝试通过sinon的callOrder或stub1.calledBefore(stub2)来断言它们,测试就通过了,不管我是否更改了执行顺序。我错过了什么?还是有什么没有记录的东西

干杯

这里有一个我正在使用的代码示例:

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调用,但顺序不同。它基本上通过了,不管我是否改变了被测系统的执行顺序。

你能提供一个最小的、可复制的、完整的代码吗?