1 回答
TA贡献1884条经验 获得超4个赞
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
});
});
如果apiName是函数,则可以使用模拟函数并更改其返回值:
import * as utils from './utils';
import { appContext } from 'mdl/appContextService';
jest.mock('mdl/appContextService', () => {
return {
appContext: {
apiName: jest.fn(() => "standard__abc") // <= use a mock function
}
}
}, { 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", () => {
appContext.apiName.mockReturnValue('something else'); // <= change the return value
expect(utils.isApiNameABC()).toEqual(false); // Success!
});
});
添加回答
举报