Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.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
Unit testing 测试一个值是否是一个开玩笑的函数_Unit Testing_Jestjs - Fatal编程技术网

Unit testing 测试一个值是否是一个开玩笑的函数

Unit testing 测试一个值是否是一个开玩笑的函数,unit-testing,jestjs,Unit Testing,Jestjs,我有一个JS文件,其中包含一个类。看起来是这样的: // testClass.js const loaders = { "model": (arg1)=> { // do something to return models data }, "events": (arg2)=> { // do something to return events data } } export default class TestClass{ con

我有一个JS文件,其中包含一个类。看起来是这样的:

// testClass.js

const loaders = {
  "model": (arg1)=> {
     // do something to return models data
  },
  "events": (arg2)=> {
      // do something to return events data
   }
}


export default class TestClass{
  constructor(config){
     this.loader = loaders[config.type]   // I want to test this line
  }
}
我正在为这个文件编写一个单元测试。在单元测试中,我想检查这个.loader是否设置正确。基本上,我想测试是否将正确的函数分配为
this.loader

这是我的单元测试文件

// testClass.test.js

import TestClass from './testClass'

describe('TestClass', ()=> {
  test('The constructor sets the loader correctly', ()=> {

      const testClassObj = new TestClass({type: 'model'})

      expect(typeof testClassObj.loader).toBe("function")   // What else can I test apart from the type?


  })
})
这里我唯一能测试的是
类型
。我正在检查它是否是一个函数


我的问题是:我还可以在这里测试什么?如果期望值是函数,我还需要测试什么呢?

对数据
类型和函数名进行断言。此外,您还可以测试
loader
函数,并对其进行断言,以验证
loader
函数确实是您所需要的,并且执行正确

testClass.js

const装入器={
型号:(arg1)=>{
//执行一些操作以返回模型数据
log('do something to return models data');
},
事件:(arg2)=>{
//做一些事情来返回事件数据
},
};
导出默认类TestClass{
构造函数(配置){
this.loader=loaders[config.type];
}
}
testClass.test.js

从“/TestClass”导入TestClass;
描述('TestClass',()=>{
test('构造函数正确设置加载程序',()=>{
玩笑间谍(控制台,'日志');
const testClassObj=新的TestClass({type:'model'});
expect(testClassObj.loader的类型).toBe('function');
expect(testClassObj.loader.name).toBe('model');
testClassObj.loader();
expect(console.log).toBeCalledWith('do something to return models data');
});
});
单元测试结果:

通过src/stackoverflow/59352068/testClass.test.js(10.165s)
测试类
✓ 构造函数正确设置加载程序(27毫秒)
console.log node_modules/jest mock/build/index.js:860
执行一些操作以返回模型数据
测试套件:1个通过,共1个
测试:1项通过,共1项
快照:共0个
时间:11:273s