Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何编写一个带有框架的单元测试?_Javascript_Testing - Fatal编程技术网

Javascript 如何编写一个带有框架的单元测试?

Javascript 如何编写一个带有框架的单元测试?,javascript,testing,Javascript,Testing,使用纯JavaScript,我想对这个基本函数进行单元测试: NS.isType = function (type, obj) { if (obj.constructor && obj.constructor.name) { return obj.constructor.name === type; } return toString.call(obj) === '[object ' + type + ']'; }; 我想开始对我的代码进

使用纯JavaScript,我想对这个基本函数进行单元测试:

NS.isType = function (type, obj) {
    if (obj.constructor && obj.constructor.name) {
        return obj.constructor.name === type;
    }
    return toString.call(obj) === '[object ' + type + ']';
};
我想开始对我的代码进行单元测试,我想在JavaScript中使用框架进行单元测试。更重要的是,我想通过阅读整本书来理解单元测试的概念。稍后,我计划阅读这篇新文章,重点是使用框架进行单元测试


如何仅使用JavaScript w/out库对上述方法进行单元测试?

简而言之,单元测试是关于红-绿的

首先,您要编写一个测试,测试您期望的函数会做什么。当您运行测试时,它将失败,因为您尚未实现它(红色)

现在在函数中实现它并再次运行测试,现在测试将通过(绿色)

现在,您再次在测试中进行一些更改,以确保它再次失败(只是检查您的测试是否始终未通过)(红色)

把它换回来,这样它就会过去

您将经常使用assert,下面是一个小示例:

function aPlusB(A,B){
  return A+B;
}
//part of your test suite:
var tests=[];
function assertEqual(a,b,message){
  tests.push({
    pass:a===b,
    message:message
  });
}
assertEqual(aPlusB(1,2),3,"Make sure 1 plus 2 equals 3");
assertThrows(aPlusB("hello",7),"Passing a string as one of the parameters should throw an error");

您只需调用该函数,并将返回值与您期望它返回的值(即您提供的值)进行比较。好的,测试远不止于实际代码。它还包括报告和分组/管理测试集等。除了pass-fail让您思考如何处理传递的无效数据外,fail-fast通常是一种很好的处理方法,因为它可以快速识别代码中哪里出了问题。在JavaScript中,您可以通过:throw(新错误(“类型参数必须是字符串”)来完成此操作