当前位置: 首页 > news >正文

iis网站主目录大连旅顺口区房价

iis网站主目录,大连旅顺口区房价,免费的ppt模板下载,做一个彩票网站需要怎么做对VS Code extension进行单元测试时通常会遇到一个问题#xff0c;代码中所使用的VS Code编辑器的功能都依赖于vscode库#xff0c;但是我们在单元测试中并没有添加对vscode库的依赖#xff0c;所以导致运行单元测试时出错。由于vscode库是作为第三方依赖被引入到我们的VS C…对VS Code extension进行单元测试时通常会遇到一个问题代码中所使用的VS Code编辑器的功能都依赖于vscode库但是我们在单元测试中并没有添加对vscode库的依赖所以导致运行单元测试时出错。由于vscode库是作为第三方依赖被引入到我们的VS Code extension中的所以它并不受我们的控制最好的办法就是在单元测试中对其中的API进行模拟。本文中我将介绍如何使用Jest来模拟vscode库的API。 如果你还不太熟悉如何开始创建一个VS Code extension这里的文档可以教你快速上手。 创建好VS Code extension项目后你会发现在根目录下有一个package.json文件VS Code extension会从中读取配置项来管理UI界面元素在实际开发中你可能会使用到其中的一些属性。我们可以通过package.json来设置项目所需要的依赖项这里我们将Jest添加为dev dependency并添加npm脚本以运行Jest单元测试。 npm i -D jest {scripts: {test: jest} } 模拟VS Code node module Jest提供了一些mocking的选项但是因为我们想要模拟整个vscode node module所以最简单的办法是在与node_modules文件夹相同的位置通常是项目的根目录创建一个__mocks__文件夹并在其中添加一个与要模拟的模块名称相同的文件vscode.js。 你不需要在测试代码中导入该模块mock会自动加载它。Jest称此为manual mocks。 这种方法最大的好处是它能将我们的测试代码与所依赖的模块分离使测试代码看起来更加整洁。这里有一个小问题新加入的开发者需要知道__mocks__文件夹否则很难理解单元测试是如何正常工作的因为单元测试中并没有VS Code模块被模拟的代码。 以下就是对VS Code模块进行模拟的代码。我们并没有模拟整个API你可以根据需要进行调整。 // vscode.jsconst languages {createDiagnosticCollection: jest.fn() };const StatusBarAlignment {};const window {createStatusBarItem: jest.fn(() ({show: jest.fn()})),showErrorMessage: jest.fn(),showWarningMessage: jest.fn(),createTextEditorDecorationType: jest.fn() };const workspace {getConfiguration: jest.fn(),workspaceFolders: [],onDidSaveTextDocument: jest.fn() };const OverviewRulerLane {Left: null };const Uri {file: f f,parse: jest.fn() }; const Range jest.fn(); const Diagnostic jest.fn(); const DiagnosticSeverity { Error: 0, Warning: 1, Information: 2, Hint: 3 };const debug {onDidTerminateDebugSession: jest.fn(),startDebugging: jest.fn() };const commands {executeCommand: jest.fn() };const vscode {languages,StatusBarAlignment,window,workspace,OverviewRulerLane,Uri,Range,Diagnostic,DiagnosticSeverity,debug,commands };module.exports vscode; 使用模拟的VS Code模块的示例 我的开源项目Git Mob for VS code中使用了这种方法我将用其中的代码来说明如何使用模拟的VS Code模块。 下面的例子中VS Code编辑器的状态栏会根据Git钩子prepare-commit-msg是否被调用来做相应的调整你可以看到这里我并没有将vscode模块导入到我的测试文件中并对其进行模拟。 // git-mob-hook-status.spec.jsconst { hasPrepareCommitMsgTemplate } require(../prepare-commit-msg-file); const { gitMobHookStatus } require(./git-mob-hook-status);jest.mock(./../prepare-commit-msg-file);describe(Hook or template status, function() {let mockContext;beforeAll(function() {mockContext {subscriptions: []};});afterEach(function() {hasPrepareCommitMsgTemplate.mockReset();});it(using git template for co-authors, () {hasPrepareCommitMsgTemplate.mockReturnValue(false);const statusBar gitMobHookStatus({ context: mockContext })();expect(statusBar).toEqual(expect.objectContaining({text: $(file-code) Git Mob,tooltip: Using .gitmessage template}));});it(using git prepare commit msg for co-authors, () {hasPrepareCommitMsgTemplate.mockReturnValue(true);const statusBar gitMobHookStatus({ context: mockContext })();expect(statusBar).toEqual(expect.objectContaining({text: $(zap) Git Mob,tooltip: Using prepare-commit-msg hook}));}); }); // git-mob-hook-status.js const vscode require(vscode); const { hasPrepareCommitMsgTemplate } require(../prepare-commit-msg-file);function gitMobHookStatus({ context }) {const myStatusBarItem vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Left,10);context.subscriptions.push(myStatusBarItem);return function() {myStatusBarItem.text $(file-code) Git Mob;myStatusBarItem.tooltip Using .gitmessage template;if (hasPrepareCommitMsgTemplate()) {myStatusBarItem.text $(zap) Git Mob;myStatusBarItem.tooltip Using prepare-commit-msg hook;}myStatusBarItem.show();return myStatusBarItem;}; }exports.gitMobHookStatus gitMobHookStatus; 你可以在这里查看源代码 git-mob-hook-status.spec.jsgit-mob-hook-status.js 我能检查vscode模块中的方法是否被调用了吗 你可以导入模拟的vscode模块。下面的代码中我想要检查当用户修改co-author文件时onDidSaveTextDocument事件是否被订阅了。 const vscode require(../__mocks__/vscode);// ... test(Reload co-author list when git-coauthors file saved, () {reloadOnSave(coAuthorProviderStub);expect(vscode.workspace.onDidSaveTextDocument).toHaveBeenCalledWith(expect.any(Function));// ... }); // ... 可以看到这里都是Jest mock API的标准用法这意味着我们可以在代码中正常使用vscode模块的方法而不受manual mock的任何限制。例如我们还可以使用mockImplementation来修改实现。 更多示例可以查看这里的源代码 reload-on-save.spec.js 编写单元测试最大的好处是可以快速得到反馈结果如果你对TDDTest-Driven Development测试驱动开发情有独钟那么单元测试将使你对VS Code extension的开发更加信心满满。 资料获取方法 【留言777】 各位想获取源码等教程资料的朋友请点赞 评论 收藏三连 三连之后我会在评论区挨个私信发给你们~
http://www.yutouwan.com/news/200538/

相关文章:

  • 免费下ppt课件的网站五星级酒店网站建设
  • 微信企业网站 源码东阳建设网站
  • 移动网站建设自助建站注册公司一般需要多少钱
  • 做网站赚什么钱童装 技术支持 东莞网站建设
  • 北京通网站建设价格低wordpress 采集微信公众号
  • 招聘网站建设需求分析开发公司交房前保洁谁承担
  • 安徽省建设厅到底哪个网站高端品牌网站设计
  • 重庆手机网站制作虎年ppt模板免费下载
  • 小豪自助建站网站慢用台服务器做跳板
  • 广西建设厅网站地址怎么做可以访问网站连接加密
  • 淄博网站建设多广东建设行业信息网
  • 邢台市建设局培训中心网站开发一个app多少钱
  • 有哪些网站开发公司全国企业信用信息公示系统网站
  • 杭州网站运营十年乐云seo建自己的网站做外贸
  • 用哪个平台做网站好湖北省建设厅建筑资料官方网站
  • 成都学校网站建开发者头条
  • 如何用wordpress快速建站餐厅类网站模板
  • 做网站美工网站开发外包公司有哪些部门
  • 文化传媒建设网站海报制作软件免费版
  • 网站建设毕业读书笔记phpcms 恢复网站
  • 个人成立公司怎么做企业网站海淀企业网站建设
  • 可以做任务的网站wordpress queryposts
  • 优斗士网站建设怎么注册一个网站做色流
  • 福建省建设工程监理协会网站虚拟空间可以做视频网站么
  • 云服务器可以做网站吗免费正规大数据查询平台
  • iis添加asp网站创新的响应式网站建设
  • 吉安做网站的随州有哪些网站建设的公司
  • 028网站建设工作室电商网站建设那家好
  • 做购物网站需要学哪些个人求职简历模板免费下载
  • 建设网站方式有哪些松江车墩网站建设