私はモカでテストしたいこの機能を持っています:
exports.readFile = readFile;
function readFile(filepath, startOffset, outputStream){
var fileSize = fs.statSync(filepath).size;
var length = fileSize - startOffset;
console.log(startOffset);
fs.createReadStream(filepath,
{start: startOffset, end: fileSize}
).pipe(outputStream);
}
次のコードを使用して機能をテストします。
var edp = require("edp.js");
var Buffered = require("buffered-stream");
var sampleData = 'A small test.';
fs.writeFileSync('./test.txt', sampleData);
var filedata = '';
var smallBufferedStream = new Buffered(20);
smallBufferedStream.on("data", function(data){
filedata += data;
});
describe('File content redirection', function(){
describe('reading small file from byte 0', function(){
it('data should be equal', function(done){
filedata = '';
edp.readFile('./test.txt', 0, smallBufferedStream);
smallBufferedStream.once('end', function(){
//sampleData value is "A small test.
assert.equal(filedata, sampleData);
done();
});
});
});
describe('reading small file from byte 8', function(){
it('data should be equal', function(done){
filedata = '';
edp.readFile('./test.txt', 8, smallBufferedStream);
smallBufferedStream.once('end', function(){
//sampleData value here is "A small test.
//It should be 'test.'
assert.equal(filedata, sampleData.substr(8));
done();
});
});
});
});
mocha コマンドを実行すると、次の情報が得られます。
0
․8
․
✖ 1 of 2 tests failed:
1) File content redirection reading small file from byte 8 data should be equal:
actual expected
A small test.
編集:問題は、テスト間でリセットされない smallBufferedStream に起因します
これはモカでのみ発生します(外部プログラムでテストを行ったところ、これは機能します)。
mocha 内で呼び出すたびに、バッファリングされたストリームに新しいストリームを強制的にリセットするにはどうすればよいですか?