JavaScript,随机数的摩卡测试
JavaScript, mocha test for random numbers
我使用下面的代码 return 随机数数组
我的问题是我应该如何用 mocha 和 chai 对它进行单元测试,因为这里的问题在每个 运行 随机数中提供...
var randomArray = function(start, end) {
var range = [];
var resetRange = function() {
for (let i = start; i < end; i++) {
range.push(i);
}
shuffle(range);
};
return function(n) {
if (range.length === 0) {
resetRange();
}
return range.splice(0, n);
};
};
var arr = randomArray(10,20);
arr(10)
将提供例如
[15, 16, 14, 17, 11, 19, 18, 10, 12, 13]
arr(3)
将提供例如
[18, 15, 10]
- 你显然可以验证元素的数量。
- 您可以 运行 它两次(或多次)并验证元素是否变化(在 chai
assert.notDeepEqual
中)。
- 如果每个元素都来自某个范围,你也可以验证。只需遍历生成的数组并验证每个元素是否大于
start
且小于 end
.
- 您可以使用不同的
start
和 end
值测试点 #3。
- 测试边缘情况
start
和 end
,例如对于 start > end
、start === end
、start < 0
、....
这取决于您想要达到的信心水平以及您可以花在该测试上的时间。
我提到的一些要点的示例(在 ES5 语法中,因为问题正在使用它):
var assert = require('chai').assert;
var testLength = function(length) {
// WHEN
var actualLength = randomArray(10, 20)(length).length;
// THEN
assert.equal(actualLength, length);
};
var testElementsRange = function(start, end) {
// WHEN
var actualArray = randomArray(10, 20)(10);
// THEN
for (var index = 0; index < actualArray.length; ++index) {
assert.isAtLeast(actualArray[index], start);
assert.isAtMost(actualArray[index], end);
}
}
describe('randomArray', function() {
describe('generates array', function() {
it('with length 3', function() {
testLength(3);
});
it('with length 10', function() {
testLength(10);
});
it('with random elements', function () {
// WHEN
var array1 = randomArray(10, 20)(10);
var array2 = randomArray(10, 20)(10);
// THEN
assert.notDeepEqual(array1, array2);
});
it('with elements within 10-20 range', function () {
testElementsRange(10, 20);
});
});
});
我使用下面的代码 return 随机数数组 我的问题是我应该如何用 mocha 和 chai 对它进行单元测试,因为这里的问题在每个 运行 随机数中提供...
var randomArray = function(start, end) {
var range = [];
var resetRange = function() {
for (let i = start; i < end; i++) {
range.push(i);
}
shuffle(range);
};
return function(n) {
if (range.length === 0) {
resetRange();
}
return range.splice(0, n);
};
};
var arr = randomArray(10,20);
arr(10)
将提供例如
[15, 16, 14, 17, 11, 19, 18, 10, 12, 13]
arr(3)
将提供例如
[18, 15, 10]
- 你显然可以验证元素的数量。
- 您可以 运行 它两次(或多次)并验证元素是否变化(在 chai
assert.notDeepEqual
中)。 - 如果每个元素都来自某个范围,你也可以验证。只需遍历生成的数组并验证每个元素是否大于
start
且小于end
. - 您可以使用不同的
start
和end
值测试点 #3。 - 测试边缘情况
start
和end
,例如对于start > end
、start === end
、start < 0
、....
这取决于您想要达到的信心水平以及您可以花在该测试上的时间。
我提到的一些要点的示例(在 ES5 语法中,因为问题正在使用它):
var assert = require('chai').assert;
var testLength = function(length) {
// WHEN
var actualLength = randomArray(10, 20)(length).length;
// THEN
assert.equal(actualLength, length);
};
var testElementsRange = function(start, end) {
// WHEN
var actualArray = randomArray(10, 20)(10);
// THEN
for (var index = 0; index < actualArray.length; ++index) {
assert.isAtLeast(actualArray[index], start);
assert.isAtMost(actualArray[index], end);
}
}
describe('randomArray', function() {
describe('generates array', function() {
it('with length 3', function() {
testLength(3);
});
it('with length 10', function() {
testLength(10);
});
it('with random elements', function () {
// WHEN
var array1 = randomArray(10, 20)(10);
var array2 = randomArray(10, 20)(10);
// THEN
assert.notDeepEqual(array1, array2);
});
it('with elements within 10-20 range', function () {
testElementsRange(10, 20);
});
});
});