- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
例如,我有以下文件:
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
函数,但我没有在文档中找到任何关于“write”函数的信息。有人已经解决了这个问题吗?
最佳答案
正如@Strech 在评论中发表的那样,您可以在调用 reader.write 之后尝试对 reader.read 进行 expect 以检查内容是否已写入假文件。
恕我直言,有一种更好的方法来测试此功能,更符合单元测试原则。我们知道 fs 模块可以工作,因为它是 Node 核心模块的一部分并且在那里进行了测试,所以我们可以模拟 fs 方法,而是检查这些方法是否以预期的方式被调用参数,例如使用 Sinon :
const Reader = require('../reader.js');
const sinon = require('sinon');
const fs = require('fs');
const expect = require('expect.js');
describe('reader.js test', function () {
let readFileSync;
let writeFileSync;
beforeEach(() => {
readFileSync = sinon.stub(fs, 'readFileSync').returns({});
writeFileSync = sinon.stub(fs, 'writeFileSync').returns({});
});
afterEach(() => {
readFileSync.restore();
writeFileSync.restore();
});
it('should return a simple string', () => {
Reader.read('files/expense.csv');
expect(readFileSync.calledOnceWith('files/expense.csv', 'utf8')).to.be(true);
});
it('should write a json object', () => {
Reader.write('files/expense.csv', 'test');
expect(writeFileSync.calledOnceWith('files/expense.csv', 'test')).to.be(true);
});
});
关于javascript - NodeJS 使用 mock-fs 测试 writeFile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40767638/
我正在尝试使用 C++ 代码将 AT 命令发送到通过 USB 连接的调制解调器。我正在使用“AT+MDN”进行测试,它在这个特定的调制解调器上返回其电话号码,并且在通过连接到其串行端口的 Putty
为了测试并确保我已经把所有东西都放下了,以便以后可以开始扩展,我正在尝试创建一个文件句柄,将给定的字节缓冲区写入该文件句柄,然后读取部分该文件放入新的测试缓冲区。 我有代码: const size_t
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
我正在设计一个将时间序列数据写入文件的系统。数据是 8 字节的 block ,分为两个 4 字节的部分:时间和负载。 根据 MSDN,如果写入的数据大小小于一个扇区,则 WriteFile 函数是原子
我不知道如何在 JSON 文件上写入。我正在开发一个单一应用程序页面,主要使用 AngularJS 和 Node.js 这是我的代码: --index.html-- ... --a
作为学习练习,我正在编写一个在运行时输出 DLL 的程序。 我已经编写了 PE header ,并使用 WriteFile 成功将 DOS header 、NT header 、可选节 header
我正在尝试将参数发送到我的arduino。所以我编写了这段代码: #include #include #include #include HANDLE serialPortHandler;
代码: #include #include #include #include HANDLE creatFile(void); long WriteBuffer(HANDLE); char *
一般来说,我是 node.js 和 javascript 的新手,但我无法理解为什么 writeFile 函数正在写入一个空白文件。我认为 for 循环应该是一个 Promise,但我不确定如何编写它
我正在尝试使用 WriteFile 函数将 wstring 写入 UTF-8 文件。我希望文件包含这些字符“ÑÁ”,但我得到的是“�”。 这是代码 #include #include #inclu
嘿,我的 write 和 readFile 方法有问题。这些方法不做任何事情。该方法应该将动态数组的元素写入名为 C++ 的文件中。然后对于读取文件,该方法应该读取 ArrayList 的元素。 这是
我正在尝试将文件从资源复制到 %localappdata%。我有这样的东西: HINSTANCE hInstance = GetModuleHandle(NULL); HANDLE hFile = I
我正在尝试写入文本文件。我可以写入控制台,但是无法写入文本文件。我注意到的一件事是,如果我只是打印到控制台,则 String data 不包含任何数据,这可能就是我的文本文件中没有出现任何内容的原因。
我遇到了一个很奇怪的问题。 我正在连接到 Xbox 360 上的 Winsock 功能,发送。在我试图从中转储 Http 请求信息的应用程序中多次调用此函数。 首先我将展示代码并解释我的问题: Wri
我正在编写一个 activex 控件,它将访问并行端口并将字节写入其中。我能够成功打开端口,但是当我写入时它卡在 WriteFile 函数上。我在这里错过了什么吗?我正在使用 Windows 7 HA
我正在尝试将 16 字节数据写入串行端口,但我无法将值转换为 lpcvoid,这是我的代码, unsigned char Buffer[16]; for (int i=0; i<16; i++
我想写入一个随机输出,其中STD_OUTPUT_FILE即可。我想用WriteFile,但是好像什么都没写。 HANDLE outH = GetStdHandle ( STD_OUTPUT_HANDL
我正在尝试移植一些使用 read() 和 write() 函数发送套接字的 C。我正在尝试将其移植到 Windows,建议(根据我所阅读的内容)使用 WriteFile 和 ReadFile 来完成我
我正在尝试将 unsigned short 和 unsigned char 数组内容写入 .img 文件。我正在使用 WriteFile 方法来做同样的事情。似乎 WriteFile 函数成功地将数组
我想创建一个包含一些文本的简单文本文件。 import java.io.*; class TextFileWriter{ public static void writeTextFile(String
我是一名优秀的程序员,十分优秀!