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
javascript单元测试-从jest虚拟模拟返回不同的对象_Javascript_Unit Testing_Jestjs_Es6 Modules - Fatal编程技术网

javascript单元测试-从jest虚拟模拟返回不同的对象

javascript单元测试-从jest虚拟模拟返回不同的对象,javascript,unit-testing,jestjs,es6-modules,Javascript,Unit Testing,Jestjs,Es6 Modules,我有一个使用虚拟模拟的jest单元测试 虚拟模拟将返回apiName=“standard\uuuu abc”的对象 我测试了一个函数(isApiNameABC()),如果apiName==“standard_uabc”,则使用模拟对象返回true,否则返回false import * as utils from '../utils'; jest.mock('mdl/appContextService', () => { return { appContext:

我有一个使用虚拟模拟的jest单元测试

虚拟模拟将返回apiName=“standard\uuuu abc”的对象

我测试了一个函数(isApiNameABC()),如果apiName==“standard_uabc”,则使用模拟对象返回true,否则返回false

import * as utils from '../utils';

jest.mock('mdl/appContextService', () => {
    return { 
        appContext: {
            apiName: "standard__abc"
        }
    }
}, {virtual: true});

describe("utils", () => { 
    test("test return value of apiName is EQUAL to standard__abc", () => {
        expect(utils.isApiNameABC()).toEqual(true);      
    });
});
使用下面的代码,我能够测试返回true的条件

我的问题是,如何修改测试代码,以便虚拟模拟为apiName返回一些其他值。我想这样做是为了测试isApiNameABC()返回false的情况

import * as utils from '../utils';

jest.mock('mdl/appContextService', () => {
    return { 
        appContext: {
            apiName: "standard__abc"
        }
    }
}, {virtual: true});

describe("utils", () => { 
    test("test return value of apiName is EQUAL to standard__abc", () => {
        expect(utils.isApiNameABC()).toEqual(true);      
    });
});

apiName
只是模块导出上的一个属性,因此您可以直接更改它

假设
utils.js
如下所示:

import { appContext } from 'mdl/appContextService';

export const isApiNameABC = () => appContext.apiName === 'standard__abc';
import * as utils from './utils';
import { appContext } from 'mdl/appContextService';

jest.mock('mdl/appContextService', () => {
  return {
    appContext: {
      apiName: "standard__abc"
    }
  }
}, { virtual: true });

describe("utils", () => {
  test("test return value of apiName is EQUAL to standard__abc", () => {
    expect(utils.isApiNameABC()).toEqual(true);  // Success!
  });
  test("test return value of apiName is NOT EQUAL to standard__abc", () => {
    const original = appContext.apiName;
    appContext.apiName = 'something else';  // <= change it directly
    expect(utils.isApiNameABC()).toEqual(false);  // Success!
    appContext.apiName = original;  // <= restore it
  });
});
您可以这样测试它:

import { appContext } from 'mdl/appContextService';

export const isApiNameABC = () => appContext.apiName === 'standard__abc';
import * as utils from './utils';
import { appContext } from 'mdl/appContextService';

jest.mock('mdl/appContextService', () => {
  return {
    appContext: {
      apiName: "standard__abc"
    }
  }
}, { virtual: true });

describe("utils", () => {
  test("test return value of apiName is EQUAL to standard__abc", () => {
    expect(utils.isApiNameABC()).toEqual(true);  // Success!
  });
  test("test return value of apiName is NOT EQUAL to standard__abc", () => {
    const original = appContext.apiName;
    appContext.apiName = 'something else';  // <= change it directly
    expect(utils.isApiNameABC()).toEqual(false);  // Success!
    appContext.apiName = original;  // <= restore it
  });
});