gpt4 book ai didi

node.js - 使用 Mocha/Chai 测试 CoffeeScript 时出现奇怪的 fs.readFile 行为

转载 作者:搜寻专家 更新时间:2023-10-31 23:14:12 25 4
gpt4 key购买 nike

请考虑我有以下 CoffeeScript 代码:

class Foobar
test: (path) ->
fs = require 'fs'
fs.readFile path, (err, data) ->
console.log 'fs.readFile callback fired'

root = exports ? window
root.Foobar = Foobar

以及以下用于 Mocha 的测试文件:

chai = require 'chai'
expect = chai.expect
chai.should()

{Foobar} = require '../source/foobar'

describe 'Foobar', ->
foobar = null
it 'does nothing', ->
foobar = new Foobar
foobar.test 'foobar.txt'

我运行测试:

mocha --compilers coffee:coffee-script -R spec

对我来说奇怪的是控制台什么都不记录。当我将我的 Coffee 更改为这个时(在末尾添加两行):

class Foobar
test: (path) ->
fs = require 'fs'
fs.readFile path, (err, data) ->
console.log 'fs.readFile callback fired'

root = exports ? window
root.Foobar = Foobar

foobar = new Foobar
foobar.test 'foobar.txt'

我运行了测试,现在控制台记录 fs.readFile 回调被触发 两次,正如预期的那样。

那么,为什么控制台在第一种情况下是空的?

最佳答案

您的测试有可能在执行 readFile 回调之前结束。 test 方法应该接受回调:

class Foobar
test: (path, callback) ->
fs.readFile path, (err, data) ->
console.log 'fs.readFile callback fired'
callback err, data

这样您就可以编写异步运行的测试:

it 'calls callback', (done) ->
foobar = new Foobar()
foobar.test 'foobar.txt', done

关于node.js - 使用 Mocha/Chai 测试 CoffeeScript 时出现奇怪的 fs.readFile 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11893538/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com