当我们有
时// arrange
var testVar = 0;
var testFunction = sandbox.stub();
// act
TestClass.TestMethod(); // it changes testVar and calls testFunction
有没有办法在testFunction被调用之前测试testVar是否被更改?
编辑:看起来没有。但!如果变量是对象属性,则可以执行类似的操作。请在下面查看我自己的答案。
答案 0 :(得分:0)
好的,看起来好像无法完成。
但是,我确实找到了一种使用对象属性进行测试的方法。伪代码示例:
before(function() {
var functionCallOrder = [];
document.body.classList.add = function() {
functionCallOrder.push('added class');
};
Object.defineProperty(document.body, 'scrollTop', {
set: function() {
functionCallOrder.push('changed viewport location');
}
});
it('should set a class before changing the viewport location'), function() {
// act
MyModule.methodThatDoesWhatTheDescriptionSays();
// assert
expect(functionCallOrder).to.deep.equal([
'added class',
'changed viewport location'
]);
});
});