期待在Jasmine

时间:2017-07-26 19:13:11

标签: javascript testing jasmine

我有一个接受回调的类的构造函数。它还有一个方法loadFile,它从文件中获取内容,稍微修改它并使用修改后的内容调用回调。到目前为止,可以轻松测试课程。

现在,我想添加一个手表功能。 loadFile将执行我刚才描述的内容并开始观看文件。每次文件更改时,都会重复该过程(加载文件 - >修改内容 - >调用回调)。我尝试使用Jasmine测试它,但我无法使其工作。

简化代码如下所示:

const path = require('path')
const watch = require('fs').watch
const write = require('fs').writeFile

class Loader {
  constructor (callback) {
    this.callback = callback
  }

  loadFile (file) {
    watch(file, (p, e) => {
      console.log('path changed', p, e)
      // do some important stuff here
      this.callback(p)
    })
  }
}

describe ('Loader', () => {
  var loader
  var callback

  beforeEach(() => {
    callback = jasmine.createSpy('callback')
    loader = new Loader(callback)
  })

  it('converts a markdown file', () => {
    // this file already exists
    const file = path.join(__dirname, 'md', 'header.md')

    loader.loadFile(file)
    write(file, 'hello', 'utf8')
    expect(callback).toHaveBeenCalled()
    console.log('end of test')
  })
})

命令行结果为:

Started
end of test
path changed change header.md
path changed change header.md
F

Failures:
1) Loader converts a markdown file
  Message:
    Expected spy callback to have been called.
  Stack:
    Error: Expected spy callback to have been called.
        at Object.it (/path/to/spec/callback.spec.js:34:22)

1 spec, 1 failure
Finished in 0.015 seconds

此测试不加载实际内容,我简化它以显示我遇到的问题:调用回调,但是在期望之后。

我花了很多时间搞清楚什么是错的,但我失败了。我想我已尝试过使用Jasmine提供的done()的所有可能组合,但我没有运气。我很感激任何帮助。

0 个答案:

没有答案