我有一个家庭作业,任务一个开始编写简单的测试。
他们以此为例。
从头开始编写assertEqual函数。
它应该将实际值和期望值与严格相等进行比较(不是 类型转换)。
成功案例
function multiplyByTwo(n) {
return n * 2;
}
var output = multiplyByTwo(2);
// returns 4 assertEqual(output, 4, 'it doubles 2 to 4');
// console output: // passed
失败案例
function multiplyByTwo(n) {
return (n * 2) + 1; // an incorrect implementation
}
var output = multiplyByTwo(2); // returns 5
assertEqual(output, 4, 'it doubles 2 to 4');
// console output:
// FAILED [it doubles 2 to 4] Expected "4", but got "5"
这就是我到目前为止......
function compareWithStrictEquality(val1, val2) {
return val1 === val2;
}
function assertEqual(actual, expected, testName) {
testName = assertEqual.name + ' : should compare actual and expected values with strict equality (not typecasting).';
console.log(testName);
return (actual()) === typeof 'boolean';
}
我没有走远,因为我不知道从哪里开始!此外 - 我过去曾使用过一些JavaScript assesments。看一下这个例子让我觉得我必须编写一些类似于我链接的测试套件的复杂逻辑......如果你的函数在做什么,它还会怎么解决?
不知怎的,我相信它更简单,我正在思考它!
提前致谢!
答案 0 :(得分:1)
假设您不必进行深层对象检查(稍后会详细介绍),看起来您走在正确的道路上并且几乎完成了。
在assertEqual
中,您必须进行比较并返回消息。一种简单的方法:
var passed = compareWithStrictEquality(actual, expected)
if (passed) console.log('passed')
else console.log('FAILED ' + testName + ' Expected ' + expected + ', but got ' + actual)
请注意,如果您需要比较对象,这将不起作用。例如:
{} === {}
// output: false
如果您需要进行object
比较,则需要进行某种形式的深度比较:Object comparison in JavaScript