Учитывая кусок кода, как показано ниже, который принимается от reinforcejsКак проверить функцию в вар в JavaScript
var RL = {};
(function(global) {
var sampleWeighted = function(p) {
var r = Math.random();
var c = 0.0; // cumulative prob
for(var i=0, n=p.length; i<n; i++) {
c += p[i];
if (c >= r) { return i; }
}
// assert(false) may happen if sum(p) < 1;
assert(false, 'wtf');
};
// many content omitted
...
})(RL);
export default RL;
Как я могу получить доступ sampleWeighted и проверить его, пожалуйста? Я попытался ниже
import RL from './rl.js';
it('sampleWeighted',() => {
expect(RL.sampleWeighted([0.5, 0.5])).toEqual(1);
});
Но он жалуется с ошибкой
FAIL src/lib/rl.test.js
✕ sampleWeighted (1ms)
● sampleWeighted
TypeError: _rl.RL.sampleWeighted is not a function
at Object.<anonymous> (src/lib/rl.test.js:7:46)
at process._tickCallback (internal/process/next_tick.js:103:7)
Я новичок в тестировании JavaScript. В настоящее время я использую create-react-app для настройки рамки тестирования. Итак, какой способ проверить вышеприведенную функцию, пожалуйста? Если вы поняли, что делает sampleWeighted
, пожалуйста, не стесняйтесь прокомментировать его.
Вместо 'var sampleWeighted', попробуйте' global.sampleWeighted' – Rajesh
Вы имеете в виду код, написанный таким образом, который является неустойчивым? По возможности, я старался следовать оригинальному авторскому соглашению. – zyxue
Вид. 'sampleWeighted' является частной функцией внутри' IIFE'. Код внутри него может использовать его, но не будет доступен для внешнего кода. – Rajesh