![](/img/trans.png)
[英]Javascript Mocha Tests - Testing function expressions inside function expressions
[英]testing array and function mocha javascript - how to get access to function and write tests
我有以下代碼在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 test/appTest.js
編寫測試,但是我不知道如何訪問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);
});
});
})
還可以嗎?
是的,您需要導出對象-
'use strict'
exports.activeModules = [
{ name: 'module 1' },
{ name: 'module 2' },
{ name: 'module 11' },
{ name: 'module 3' },
{ name: 'module 10' }
];
exports.getCustomModuleNumber = () => Math.max(
...activeModules.map( n => n.name.match("\\d+"))
);
其次,如果您的所有功能都使用regex
來匹配模塊號,那么我想只需檢查您知道將返回的各個值就足夠了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.