我正在使用test.js文件中的以下代码从JSON类型文件中检索JSON数据进行测试
var data;
before(function(done) {
data = JSON.parse(fs.readFileSync(process.cwd() + '/path/to/data.json', 'utf8'));
done();
});
如何编写一个使用assert或mocha模拟和测试JSON解析错误的测试?我希望测试确认/声明解析JSON时没有错误。
答案 0 :(得分:0)
您仅应使用before
钩子来进行测试的设置,而不要断言您要测试的代码的行为符合您的预期(有关钩子及其在Mocha中的使用的更多信息, documentation。
要断言您要测试的代码确实符合预期,应该将代码放入it
中。
考虑到这一点,您可以在before
钩子中读取json文件的原始数据(因为这是测试的设置),然后在测试中编写json字符串的解析:
var rawData;
before(function() {
// No need to use 'done' since we are performing a synchronous task
rawData = fs.readFileSync(process.cwd() + '/path/to/data.json', 'utf8');
});
it('should correctly parse the json', function() {
var data = JSON.parse(rawData);
// Your expectations about data would be placed here.
});
为了达到期望,可以使用any assertion library you want,并且应该检查data
是否具有“ path / to / data.json”文件中存在的属性和值。 / p>
例如,如果您使用chai库进行断言,而您的data.json
文件具有以下内容:
{ key1: 'value1', key2: 'value2' }
您可以写断言:
it('should correctly parse the json', function() {
var data = JSON.parse(rawData);
// Your expectations about data would be placed here.
expect(data).to.deep.equal({ key1: 'value1', key2: 'value2' });
});