Javascript 是否有一个函数来测试在js中具有回调的对象实例?

Javascript 是否有一个函数来测试在js中具有回调的对象实例?,javascript,object,promise,callback,sinon,Javascript,Object,Promise,Callback,Sinon,我正在使用sinon来存根一个对象的实例,该对象在函数中有一个回调,我如何测试它?。 我不知道如何测试这个,这给了我一个错误 这是使用js与西农和摩卡 功能是: import tracker from 'pivotaltracker'; export async function getPivotalProjects(token) { const clientTracker = new tracker.Client(token); const userProjects = () =&g

我正在使用sinon来存根一个对象的实例,该对象在函数中有一个回调,我如何测试它?。 我不知道如何测试这个,这给了我一个错误

这是使用js与西农和摩卡

功能是:

import tracker from 'pivotaltracker';

export async function getPivotalProjects(token) {
  const clientTracker = new tracker.Client(token);
  const userProjects = () => new Promise((resolve, reject) => {
    clientTracker.projects.all((error, projects) => (projects ? resolve(projects) : reject(error)));
  });
  return userProjects();
测试是:

import tracker from 'pivotaltracker';
let spyTracker;
    beforeEach(() => {
      spyTracker = sinon.stub(tracker, 'Client');
    });

it('should do the request to get the activities from projects.', async () => {
      spyTracker.callsArgWith(1, null, [true, 'token']);
      // spyTracker.projects.all.returns('token');
      await PivotalTrackerApi.getPivotalProjects('token');
      sinon.assert.threw(spyTracker);
spyTracker.restore();
    });

这有什么不对吗?如果有人能帮助我,那就太好了。

getPivotalProjects
可以简化为:

export async function getPivotalProjects(token) {
  const clientTracker = new tracker.Client(token);
  await new Promise((resolve, reject) => {
    clientTracker.projects.all((error, projects) => (projects ? resolve(projects) : reject(error)));
  });
}
…它可以像这样进行测试:

let clientStub;

beforeEach(() => {
  clientStub = sinon.stub(tracker, 'Client');
});

it('should do the request to get the activities from projects.', async () => {
  const allSpy = sinon.spy();
  clientStub.callsFake((token) => ({ projects: { all: allSpy } }));
  const promise = PivotalTrackerApi.getPivotalProjects('token');
  sinon.assert.calledWith(clientStub, 'token');  // Success!
  sinon.assert.called(allSpy);  // Success!
  const callback = allSpy.lastCall.args[0];
  callback(null, 'my projects');
  const result = await promise;
  expect(result).to.equal('my projects');  // Success!
});

这给我带来了一个错误
你说的一个错误,多么有趣,有什么特别的错误吗poh抱歉,这是一个误解,我试图说,这实际上给我的测试实施带来了一个错误,我不知道如何测试itOK,让我尽可能用简单的英语发布这个。。。请将您遇到的错误包括在问题中,因为“错误”信息不足,如果您不想再次透露错误的原因,您最好不要提及它,错误是这样的:
error:function[function]被抛出,抛出错误:)。
;对不起,我正在学习,谢谢!