Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.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
Node.js 嘲笑多个文件和静态方法_Node.js_Jestjs - Fatal编程技术网

Node.js 嘲笑多个文件和静态方法

Node.js 嘲笑多个文件和静态方法,node.js,jestjs,Node.js,Jestjs,尝试使用jest编写测试用例,但是如何编写测试 下面的代码段A是一个单独的文件,三个是不同的文件 我需要像编写单元测试用例一样,将测试用例作为单独的文件编写 我陷入了编写静态方法调用和模拟多重 请参见下面我也尝试过的内容 谢谢你的帮助 常量一=需要“../一”; 常数二=要求'../二'; 常数三=要求'../三'; 甲级{ 公共静态checkTestingparam{ 开关参数{ 案例一: 返回一个; 案例二: 返回两个; 违约: 返回三个; } } 构造器参数{ this.testing=A

尝试使用jest编写测试用例,但是如何编写测试 下面的代码段A是一个单独的文件,三个是不同的文件 我需要像编写单元测试用例一样,将测试用例作为单独的文件编写

我陷入了编写静态方法调用和模拟多重 请参见下面我也尝试过的内容

谢谢你的帮助

常量一=需要“../一”; 常数二=要求'../二'; 常数三=要求'../三'; 甲级{ 公共静态checkTestingparam{ 开关参数{ 案例一: 返回一个; 案例二: 返回两个; 违约: 返回三个; } } 构造器参数{ this.testing=A.checkTestingparam; } } module.exports=A; const multiple=需要“../multiple”模块; const config=require'../config'; 三班{ 公共静态采样测试写入{ 返回{ b:param=>多个[config.access]参数 }; } 建造师{ this.sampleTesting=3.sampleTestingWrite; } } module.exports=3; A.test.js:

常量一=需要“../一”; 常数二=要求'../二'; 常数三=要求'../三'; 常数A=要求“…”; 开玩笑。模仿“../one”; 开玩笑,模仿“../two”; 开玩笑,模仿“../3”; 描述“测试用例”,=>{ 测试“应该启动构造函数”,=>{ const mockStaticFunction=jest.fn; mockStaticFunction.mockReturnValue'返回一个对象,该对象对多个对象执行某些操作'; const MockA=新的“一”; console.logmoka; Console.mock实现=>{}; console.logmedia; expectConsole.to被催收的时间1; }; };
如果要测试是否正确调用了的构造函数。没有必要模拟一、二、三个模块。只有你需要模仿/间谍才是 A的静态检验方法

这是解决方案,我使用typescript

import one from './one';
import two from './two';
import three from './three';

class A {
  public static checkTesting(param) {
    switch (param) {
      case 'one':
        return one;
      case 'two':
        return two;
      default:
        return three;
    }
  }
  private testing;
  constructor(param) {
    this.testing = A.checkTesting(param);
  }
}

export { A };

单元测试:

import { A } from './a';

describe('A', () => {
  describe('checkTesting', () => {
    it('should initiate the constructor', () => {
      jest.spyOn(A, 'checkTesting').mockReturnValue({ name: 'never mind' });
      const param = 'one';
      const a = new A(param);
      expect(a).toBeInstanceOf(A);
      expect(A.checkTesting).toBeCalledWith(param);
    });
  });
});

具有覆盖率的单元测试结果:

通过src/mock function/57624975/a.spec.ts A. 检查测试 ✓ t1 8ms -----|-----|-----|-----|-----|----------| 文件|%Stmts |%Branch |%Funcs |%Lines |未覆盖的行| -----|-----|-----|-----|-----|----------| 所有文件| 73.33 | 0 | 66.67 | 73.33 || a、 ts | 66.67 | 0 | 66.67 | 66.67 | 7,9,11,13| 1.ts | 100 | 100 | 100 | 100 || 3.ts | 100 | 100 | 100 | 100 || 2.ts | 100 | 100 | 100 | 100 || -----|-----|-----|-----|-----|----------| 测试套件:1个通过,共1个 测试:1项通过,共1项 快照:共0个 时间:1.649秒,估计3秒