我正在 Jasmine 中测试 NoSQL 文档的表示。每个文档都有一个 save
方法,它将对对象的更改保存到数据库,还有一个 reload
方法,它将文档从数据库加载到对象中。我想定义一个 sync
方法,它简单地调用 save
然后调用 reload
。
我对该方法的测试如下所示(subject
是文档实例):
describe 'sync', ->
it 'saves and then reloads', ->
spyOn(subject, 'save')
spyOn(subject, 'reload')
subject.sync()
expect(subject.save).toHaveBeenCalled()
expect(subject.reload).toHaveBeenCalled()
然而,这个测试是不完整的;它传递一个 sync
方法,该方法在保存之前重新加载,这将丢弃对文档所做的更改。
如何断言 save 方法在 reload 方法之前被调用?
最佳答案
我发现的一个解决方案是推送到数组而不是使用 Jasmine spy :
describe 'sync', ->
it 'saves and then reloads', ->
callOrder = []
subject.save = -> callOrder.push 'save'
subject.reload = -> callOrder.push 'reload'
subject.sync()
expect(callOrder).toEqual(['save', 'reload'])
关于javascript - Jasmine 断言调用顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33324768/