我在理解测试方面遇到了一些问题,因为我几乎从没有发现它是必需的。
如果我有简单的功能,例如
function isMovementOutOfBounds(newPosition) {
if (newPosition[0] > input[0][0] || newPosition[0] < 0 || newPosition[1] > input[0][1] || newPosition[1] < 0) {
return true;
}
return false;
}
或
function isMovementForbidden(forbiddenMovements, initialPosition, newPosition) {
function isArrayInArray(arr, item) {
const item_as_string = JSON.stringify(item);
const contains = arr.some((ele) => JSON.stringify(ele) === item_as_string);
return contains;
}
const newMovement = [initialPosition, newPosition];
if (isArrayInArray(forbiddenMovements, newMovement)) {
return true;
}
return false;
}
是否还要对其进行测试?他们总是有回报,而且总是布尔值。所以我不知道是否真的有必要对其进行测试。
也许我应该测试他们收到的输入类型?
在我看来这一切都是愚蠢的,我该如何测试那些功能?对我要寻找的东西有任何想法吗?
答案 0 :(得分:1)
至少
只是为您提供一个线索,说明您可以执行哪种测试,请查看下面的演示(到目前为止,该示例表明您的代码不起作用):
mocha.setup('bdd')
const { expect } = chai
function isMovementForbidden(forbiddenMovements, initialPosition, newPosition) {
function isArrayInArray(arr, item) {
const item_as_string = JSON.stringify(item);
const contains = arr.some((ele) => JSON.stringify(ele) === item_as_string);
return contains;
}
const newMovement = [initialPosition, newPosition];
if (isArrayInArray(forbiddenMovements, newMovement)) {
return true;
}
return false;
}
const testSuite = [
{
descr: 'Should work for basic coordinates',
input: [[[0,0],[1,1]], [2,3], [1,1]],
output: true
},
{
descr: 'Should be able to handle empty array of forbidden movements',
input: [[], [0,0], [1,1]],
output: false
},
{
descr: 'Should be able to allow staying at current point',
input: [[1,1], [0,0], [0,0]],
output: false
}
]
describe('Basic test', ()=>{
testSuite.forEach(({input, output, descr}) =>
it(descr, ()=>{
expect(isMovementForbidden(...input)).to.equal(output)
}))
})
mocha.run()
<script src="https://cdnjs.cloudflare.com/ajax/libs/mocha/8.0.1/mocha.min.js"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/chai/4.2.0/chai.min.js"></script><div id="mocha"></div>
答案 1 :(得分:0)
测试有很多好处。您可能会检测到不必要的代码,或者理想情况下会发现一些错误。
在这种情况下,您可以测试一些给定的边沿情况或一些基本输入,以确保函数返回正确的布尔值。
如果您不想测试太多,至少需要一个或两个简单的测试就足以测试函数本身。