【发布时间】:2017-10-22 14:21:46
【问题描述】:
我有这段代码可以在index.js 文件中编写测试:
'use strict'
const activeModules = [
{ name: 'module 1' },
{ name: 'module 2' },
{ name: 'module 11' },
{ name: 'module 3' },
{ name: 'module 10' }
];
const getCustomModuleNumber = _ =>
Math.max(...activeModules.map( n =>
n.name.match("\\d+")
));
我想在 mocha chai 中编写测试,但我不知道如何访问 test/appTest.js 中的函数
const assert = require('chai').assert;
const app = require('../index');
activeModulesResult = app.activeModules;
getCustomModuleNumberResult = app.getCustomModuleNumber;
describe('App', function() {
it('activeModules should be type array', function() {
assert.typeOf(activeModulesResult, 'array');
});
it('getCustomModuleNumber should be type number', function() {
assert.typeOf(getCustomModuleNumberResult, 'number');
});
})
控制台使用getCustomModuleNumber is undefined 显示错误,或者当我添加getCustomModuleNumber() 时显示这不是函数。
1. 我的项目只包含index.js 文件和测试所需的文件。什么是最好的测试方法,为什么?也许我需要添加到index.js 文件module.exports?哪种解决方案是最优化的,并且符合干净代码和 ES6 的原则?
2.我应该写什么测试?我知道我应该检查getCustomModuleNumber函数是否返回11,它返回的type,但我完全不知道我是否应该检查该函数的其他组件?
编辑:
我写过这样的测试:
const assert = require('chai').assert;
const app = require('../index').main;
activeModulesResult = app.activeModules;
getCustomModuleNumberResult = app.getCustomModuleNumber();
describe('App', function() {
describe('activeModules', function(){
it('activeModules should be type array', function() {
assert.isArray(activeModulesResult);
});
it('activeModules has the same members', function() {
const testArray = [
{ name: 'module 1' },
{ name: 'module 2' },
{ name: 'module 11' },
{ name: 'module 3' },
{ name: 'module 10' },
];
assert.includeDeepMembers(activeModulesResult, testArray , 'same members');
});
});
describe('getCustomModuleNumber', function(){
it('getCustomModuleNumber should be type number', function() {
assert.isNumber(getCustomModuleNumberResult);
});
it('getCustomModuleNumber should return 11', function() {
assert.equal(getCustomModuleNumberResult, 11);
});
});
})
没关系,仅此而已?
【问题讨论】:
标签: javascript unit-testing testing mocha.js chai