我的.ts文件中有下一个代码:
import { getBuildUrl } from '../../service/navigationService';
const appUtils = require('../../utils/appUtils');
describe('Report Title suite tests', () => {
let getHostNameStub = jest.spyOn(appUtils, 'getHostName')
let getOrganizationNameStub = jest.spyOn(appUtils, 'getOrganizationName')
let getProjectNameStub = jest.spyOn(appUtils, 'getProjectName')
describe('returnBuildUrl', () => {
getHostNameStub.mockReturnValue("HostNametest")
getOrganizationNameStub.mockReturnValue("OrganizationTest")
getProjectNameStub.mockReturnValue("ProjectNameTest")
it('should display title and description without report URL', async () => {
expect(getBuildUrl("IdTest")).toBeDefined();
expect(getBuildUrl("IdTest")).toEqual("https://HostNametest/OrganizationTest/ProjectNameTest/_build/results?buildId=IdTest")
});
});
});
正如您所看到的,appUtils方法是模拟的,但我在appUtils类中有下面的代码:const VSS_SDK = VSS;
,例如:
const VSS_SDK = VSS;
/**
* return host name
*/
export function getHostName() {
return VSS_SDK.getWebContext().host.authority;
}
VSS
是在项目环境中提供的库
运行测试后,我收到错误:
Test suite failed to run
ReferenceError: VSS is not defined
8 |
9 | // eslint-disable-next-line no-undef
> 10 | const VSS_SDK = VSS;
是否可以模拟VSS
库以避免此类错误?
getWebContext函数看起来像这样:
/**
* Get the web context from the parent host
*/
function getWebContext(): WebContext;
和WebContext接口:
interface WebContext {
account: HostContext;
/**
* Information about the Collection used in the current request (may be null)
*/
collection: HostContext;
/**
* Information about the current request context's host
*/
host: ExtendedHostContext;
/**
* Information about the project used in the current request (may be null)
*/
project: ContextIdentifier;
/**
* Information about the team used in the current request (may be null)
*/
team: TeamContext;
/**
* Information about the current user
*/
user: UserContext;
}
使用建议的解决方案,我得到下一个错误:
Type '() => { host: { authority: string; }; }' is not assignable to type '() => WebContext'.
Type '{ host: { authority: string; }; }' is missing the following properties from type 'WebContext': account, collection, project, team, userts(2322)
VSS.SDK.d.ts(201, 14): The expected type comes from property 'getWebContext' which is declared here on type 'typeof VSS
1条答案
按热度按时间bjp0bcyl1#
从我所看到的
VSS
是一个全局变量,它不为jest runner所知。您需要为jest提供一种查看该变量的方法。
您有两个选项可以进行配置:
您所需要做的就是编辑您的jest配置,并在其中添加一个选项,如下所示
您可以在
setup.js
文件中声明任何全局变量,或者在执行测试之前做任何您想做的事情(这完全取决于您)。确保添加了测试运行中可能需要的所有属性和方法。