javascript单元测试-从jest虚拟模拟返回不同的对象
我有一个使用虚拟模拟的jest单元测试 虚拟模拟将返回apiName=“standard\uuuu abc”的对象 我测试了一个函数(isApiNameABC()),如果apiName==“standard_uabc”,则使用模拟对象返回true,否则返回falsejavascript单元测试-从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:
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
});
});