Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.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 - Fatal编程技术网

JavaScript:测试函数

JavaScript:测试函数,javascript,Javascript,我为我的“计数器”编写了“测试”函数,但它不起作用!你能帮助我理解我错在哪里吗 “test”必须有一个名为“toEqual”的方法 附言:“柜台”很好 功能测试(数据){ toEqual:功能(e){ 返回( this.data.bind(this)==e?console.log('good'):console.log('sucks!') ); } } 常量计数器=(状态=0,操作)=>{ 开关(动作类型){ 案例“增量”: 返回状态+1; “减量”一案: 返回状态-1; 违约: 返回状态;

我为我的“计数器”编写了“测试”函数,但它不起作用!你能帮助我理解我错在哪里吗

“test”必须有一个名为“toEqual”的方法

附言:“柜台”很好

功能测试(数据){
toEqual:功能(e){
返回(
this.data.bind(this)==e?console.log('good'):console.log('sucks!')
);
}
}
常量计数器=(状态=0,操作)=>{
开关(动作类型){
案例“增量”:
返回状态+1;
“减量”一案:
返回状态-1;
违约:
返回状态;
}
}
试验(
计数器(0,{type:'INCREMENT'})
).toEqual(1);
试验(
计数器(1,{type:'INCREMENT'})
).toEqual(2);
试验(
计数器(2,{类型:'减量'})
).toEqual(1);
试验(
计数器(2,{类型:'减量'})
).toEqual(0);
试验(
计数器(1,{键入:'SOMETHING_other'})
).toEqual(1);
试验(
计数器(未定义,{})

).toEqual(0)简化代码将有助于解开一些困惑,并解决您遇到的语法问题

您当前的
test
函数被错误地写为既是一个函数的尝试,也是一个对象。只需将
test
作为一个对象(可能是测试库的开始),并将
toEqual
作为一个函数(测试库中的第一个函数),它接受两个参数,如下所示:

    const test = {
      toEqual: function(counterInstance, expected) {
        return counterInstance === expected ? console.log('they are equal') : console.log('they are not equal');
      }
    }
在您更好地掌握语法之前,我建议您暂缓使用语法。只需使用更简单的函数语法编写
计数器

    const counter = function(state, action) {
      switch (action.type) {
        case 'INCREMENT':
          return state + 1;
        case 'DECREMENT':
          return state - 1;
        default:
          return state;
      }
    }
然后,只需使用两个参数调用
toEqual
函数,如下所示:

    test.toEqual(counter(0, { type: 'INCREMENT' }), 1);

您的代码出现语法错误!您混淆了函数和对象文字。函数没有方法。@Bergi-也许我误解了您的评论,但请注意JavaScript“对象”最有可能以函数作为成员。此外,您不能像属性一样访问
数据
参数(
this.
),调用
计数器
的结果是一个数字,因此您不能
bind()
it.@DavidW当然,但OP对这些不感兴趣(可能不知道),所以我忽略了这个细节。他肯定是把语法弄混了,所以这是首先需要解决的问题。我回答了同样的问题,然后看到这个“测试”必须有一个叫做“toEqual”的方法@Craicerjack-谢谢你抓住我的疏忽-更新答案