【发布时间】:2017-04-07 15:36:02
【问题描述】:
例如,我有以下文件:
spec/config/file-mock.js
var mock = require('mock-fs');
mock({
'files': {
'expense.csv': 'a;b;c;d\n1;2;3;4\n5;6;7;8'
}
});
app/reader/reader.js
var fs = require('fs');
var reader = {
read: function(path) {
return fs.readFileSync(path, 'utf8');
},
write: function(path, object) {
fs.writeFileSync(path, object);
}
};
module.exports = reader;
app/reader/reader.spec.js
describe('reader.js test', function(){
var reader = require('./reader.js');
var mock = require('mock-fs');
it('should return a simple string', function(){
expect(reader.read('files/expense.csv')).toEqual('a;b;c;d\n1;2;3;4\n5;6;7;8');
});
it('should write a json object', function(){
// WHAT TO DO?!
});
});
reader.read 函数与mock-fs 一起工作正常。
但我正在尝试测试reader.write 函数,但我在文档中没有找到有关“写入”函数的任何内容。有人已经解决了这个问题吗?
【问题讨论】:
-
你有没有尝试只做一个 reader.write,然后对 reader.read 做一个期望?
reader.write('/temp/foo.txt', 'bar'); expect(reader.read('temp/foo.txt').toEqual('bar') -
在找到您的评论之前,我遇到了同样的问题。 Mock-fs 模拟整个 fs 模块,因此当您编写时,您实际上并不是在系统上编写,而是在 mock-fs 对象中编写。
标签: javascript node.js unit-testing mocking