4

开发一个回调驱动的 API,我想用一组特定的参数和“任何”函数(回调)来表达某个函数。

Jasmine 可以执行以下操作:

var serviceFunction = jasmine.createSpy();
var functionUnderTest = create(serviceFunction);
var thing = 'arbitrary/thing'

functionUnderTest(thing);
expect(serviceFunction).toHaveBeenCalledWith(thing, jasmine.any(Function));

有 sinon/buster.js 类似的能力吗?到目前为止,我只测试了第一个参数,但我真的很想表达在测试中需要回调。

这是我到目前为止所拥有的:

var serviceFunction = this.spy(); // or `sinon.spy()`
var functionUnderTest = create(serviceFunction);
var thing = 'arbitrary/thing'

functionUnderTest(thing);
assert.calledWith(serviceFunction, thing);
4

1 回答 1

9

您应该查看 sinon.match api ( http://sinonjs.org/docs/#sinon-match-api )

使用 sinon.match.func 您上面的示例将变为:

var serviceFunction = this.spy(); // or `sinon.spy()`
var functionUnderTest = create(serviceFunction);
var thing = 'arbitrary/thing'

functionUnderTest(thing);
assert.calledWith(thing, sinon.match.func);
于 2013-11-23T19:34:44.283 回答