0
我爲同一個文件創建一個WriteStream
和ReadStream
。ReadStream和WriteStream到nodejs中的同一個文件
我正在測試用於在磁盤上保存對象的代碼。
# Code
g:(stream, cb)->
stream.on("data", (chunk) -> chunks.push(chunk))
stream.on("end",() -> cb(MyComplexObjectClass.decode(Buffer.concat(chunks)))
# Test
it "allows to persist MyComplexObject to disk", (done) ->
MyComplexObject = ... # Initialization code
_in = fs.createWriteStream("XXX")
out = fs.createReadStream("XXX")
_in.write(MyComplexObject.encode())
_in.end()
g(out, (x) ->
# Validation of x here, should be MyComplexObject
done()
)
測試通過的就是三個問題:
- 我相信,有競爭條件:當
end
叫上_in
,變化可能不會被刷新到文件。如何在測試中重現競賽狀況? - 交換
_in
和out
的聲明使程序崩潰,但Uncaught SyntaxError: Unexpected end of input
雖然文件存在,爲什麼? - 有沒有更好的方法來實現(仍然使用流)?
我在我的實現中實際使用了JSON.stringify,這不是問題的要點: 1)如何證明競爭條件並測試它? 2)爲什麼交換崩潰? 3)我想用相同的文件執行測試,仍然 – lc2817