在前端开发中,测试是一个重要的环节,而为了测试 JavaScript 代码和 Web 应用程序,我们需要实验性地创建一些类似于运行时的对象,通常称之为“mock”。Xrm-Mock-Generator 是一个 JavaScript 库,它能够帮助你轻松创建 Microsoft Dynamics 365 客户端对象的 mock 版本。这个库使用简单而直观的方式提供 Xrm 对象及其成员的 mock 实现。
在本篇教程中,我们将学习如何使用 npm 包 @wycliffeassociates/xrm-mock-generator 来进行 Web 应用程序开发中的测试。
安装
在命令行中使用以下命令安装 xrm-mock-generator:
npm i -D @wycliffeassociates/xrm-mock-generator
简介
Xrm-Mock-Generator 是一个为 Microsoft Dynamics 365 提供 mock Xrm 实现的 npm 包。为什么需要这个包呢?因为在开发 Dynamics 365 的应用程序的过程中,需要读取和操作 Xrm 对象。Xrm-Mock-Generator 可以让我们在不连接到 Dynamics 365 服务器的情况下构建和测试应用程序。
这个包将为您提供以下功能:
- 提供 Xrm 对象的完整实现的 mock,包括实例对象和实例成员对象
- 能够做到按需创建非必需的对象
- 对于不是必需的成员对象,提供默认值
使用
在开始使用 Xrm-Mock-Generator 之前,您要先创建一个 JSDom 环境来模拟浏览器窗口,这样我们才能使用 Xrm 的 mock 实例。
const JSDOM = require('jsdom').JSDOM; const XrmMockGenerator = require('@wycliffeassociates/xrm-mock-generator'); const dom = new JSDOM('', { url: 'http://localhost:9876' }); global.window = dom.window; global.document = dom.window.document; global.XRM = XrmMockGenerator.getMockXrmInstance();
在运行上述代码段之后,我们将得到一个包含 Xrm 对象的全新对象,在这个对象上,您可以创建自己的 mock 实例。
-- -------------------- ---- ------- ----- ----------- - --------------------------------------- ----------- ---------- --- --------------------------------------- ----------- - ----- ------ -- ---------------- - ----- ------ -- ----------------- - ----------------- - - --- --------------------------------------- ----- --------- - - - ---
在上述代码中,我们创建了一个名为“accountMock”的 mock 对象。我们先通过 getEntityMock 方法创建了一个 Xrm 的实例,接下来我们可以照常进行测试。
expect(accountMock.attributes.name).toBe('test'); expect(accountMock.formattedValues.name).toBe('test'); expect(accountMock.entityReferences.primarycontactid[0].id).toBe( '11128589-7D36-DF11-97B7-00155DBA0F15' );
属性
在 Xrm-Mock-Generator 中,有以下属性可以供您使用:
getEntityMock
const accountMock = global.XrmMockGenerator.getEntityMock({ entityName: 'account', id: 'FC1D62B4-F4B0-4DE9-8A0D-03C392E6CB51', attributes: { name: 'test' } });
通过 getEntityMock 方法,我们可以创建完整的实体对象,包括它的 ID、名称、属性等信息。
getXrmPageMock
const xrmPageMock = global.XrmMockGenerator.getXrmPageMock();
getXrmPageMock 可以创建一个包含 Xrm.Page 对象的 mock 实例。
getXrmMobileOfflineMock
const xrmMobileOfflineMock = global.XrmMockGenerator.getXrmMobileOfflineMock();
getXrmMobileOfflineMock 创建了一个包含 Xrm.Mobile.offline 实例的 mock 对象。
getXrmMobileMock
const xrmMobileMock = global.XrmMockGenerator.getXrmMobileMock();
getXrmMobileMock 则是创建了一个包含 Xrm.Mobile 实例的 mock 对象。
getXrmNavigationMock
const xrmNavigationMock = global.XrmMockGenerator.getXrmNavigationMock();
getXrmNavigationMock 创建了包含 Xrm.Navigation 实例的 mock 对象。
getXrmExecutionContextMock
const executionContextMock = global.XrmMockGenerator.getExecutionContextMock({ formContext: xrmPageMock, depth: 1, getFormContext: () => { return xrmPageMock; } });
getXrmExecutionContextMock 可以创建 Xrm 的 executionContext 实例。
结论
Xrm-Mock-Generator 是一款非常强大的 npm 模块,能够有效地帮助开发人员进行代码测试,它提供了完整的 Xrm 对象的实现,能够帮助开发人员轻松构建和测试应用程序。在本篇文章中,我们介绍了如何安装和使用 Xrm-Mock-Generator 的所有步骤和方法,希望能够帮助大家更好地理解和掌握这个工具包。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600562de81e8991b448e0536