首先安装nodemon,如果是全局安装,那么所有项目都可以使用mock服务
npm安装节点
然后安装express-mockjs
npm i -D快速-模拟
然后按照以下步骤操作
第一步是在项目的根目录下创建一个api-interface文件,然后创建一个名为mocks的文件夹,在其中可以放置json或js,然后在mocks对等目录下创建一个app.js文件
第二步是编写app.js
第三部分在mocks文件中编写一个名为test的json文件。文件中的代码如下
然后写
/* * *测试界面* * @url /test-demo * *详细描述* uid : userid * name : username * email 3360 mail */{ ' code ' : 0 0,Result | 5' : [{'uid | 1' : 1,' name' :' @ name ',' email' :' @ email'}]第四步启动app.js的脚本如下
节点API-接口/app.js
点击点击,链接如图
模拟服务渲染,如图所示:
第四部分,创建一个新的js文件,文件名为user,文件代码如下
/* * *用户页面-用户信息界面* * @url用户?uid=233 * */module . exports=function(req){ var uid=req . query . uid;if(!uid) { return { code: -1,msg: 'no uid ',} } return { code: 0,data: { 'uid': uid,' name': '@name ',' age|20-30': 1,' email': '@email ',},};};第五步按Ctrl-C退出
然后执行它
节点API-接口/app.js
效果图如下
其中,注意细节
req . query . uid;是你地址栏的参数,相当于GET模式的参数。req . body . uid;是您开机自检的参数。这是express的语法。你可以直接查快递单。每次修改都要手动启动,非常麻烦。建议用插件自动启动。全局安装npm i -g nodemon可以被所有项目使用,如果它是全局安装的话。然后在你的package.json脚本中添加一个‘API’:‘nodemon-e JSON-w API-interface API-interface/app . js’。
以上步骤都是js集团的一位大神讲的。大神的博客地址是http://www.52cik.com/,我要感谢大楼的大神
https://Github.com/52cik/express-mockjs快递公司github地址
附言:以下是vue-test-utils中模拟全局对象例子的详细说明
Vue-test-utils提供了一种模拟Vue.prototype的简单方法,不仅适用于测试用例,还可以为所有测试设置默认模拟。
模拟加载选项
模拟加载选项是将任何属性附加到Vue.prototype的一种方式.这通常包括:
$ store,forvuex $ router,forvue router $ t,forvue-i18n等。
vue-i18n示例
我们来看一个vue-i18n的例子。虽然每个测试都可以使用createLocalVue,并且可以安装vue-i18n,但是这可能会使处理和引入一堆模板变得困难。首先,双语组件使用vue-i18n3360
template div class=' hello ' { $t(' hello world ')} }/div/template script export default { name : '双语' }/script,你先在另一个文件中翻译,然后通过$ t引用,这就是vue-i18n的工作方式。在这个测试中,虽然我并不真正关心翻译文件是什么样子,但我仍然想看一看以下内容:
导出默认值{ ' en ' : { Hello world d : ' Hello world!'},' JA' : {Hello World :' ,世界!'}}基于此区域设置,将呈现正确的翻译。让我们尝试在没有模拟的情况下呈现测试中的组件:
从“@vue/test-utils”导入{浅层安装}从“@/components/双语导入. vue ' description('双语',()={ it(' renderssccessfully ',()={constwrapper=浅层安装(双语)})})运行three test : unit测试将抛出一堆错误堆栈。如果仔细观察输出,您会发现:
[Vue warn]: config . Error handler : ' type Error : _ VM中的错误。“$t不是函数”
这是因为我们没有安装vue-i18n,所以全局$t方法不存在。让我们尝试模拟加载选项:
从“@vue/test-utils”导入{浅水挂载}从“@/components/双语导入. vue ' description('双语',()={it('渲染成功',()={const wrapper=浅水挂载(双语,{ mock : { $ t :(msg)=msg } })})})现在测试通过了!mocks选项有很多用途,我认为最常用的是开头提到的三种。
(翻译:这样就不可能在单元测试中耦合与特定语言相关的内容,因为翻译功能实际上已经失效了,处理可选参数等就更难了。)
使用配置设置默认模型
有时你需要一个mock的默认值,所以你不必为每个测试用例设置它。它可以用vue-test-utils提供的配置API来实现。或者vue-i18n的一个例子:
从“@ vue/test-utils”中导入vuetestutils vuetestutils . config . mocks[' mock ']=' default mock value '这个示例中使用了Jest,所以我将在jest.init.js文件中描述默认的mock-这个文件将在测试运行之前自动加载。同时,我还将导入并应用前面示例中使用的翻译对象。
//jest.init.jsimport从“@vue/test-utils”导入VueTestUtils翻译。/src/translations . js ' const locale=' en ' vuetestutils . config . mocks[' $ t ']=(msg)=translations[locale][msg]虽然仍然使用mock $ t函数,但将呈现真实的翻译。再次运行测试,这次删除了模拟加载选项,并使用console.log打印wrapper.html()
description('双语',()={ it(' rendersssuccessfully ',()={const wrapper=浅层挂载(双语)控制台. log(wrapper.html())})})通过了测试,呈现了以下结构:
div class='hello' Hello world!/div(翻译:仍然无法处理复杂的翻译)
摘要
本文讨论:
在测试用例中使用mock,使用mock作为全局对象,用config.mocks设置默认mock以上是边肖介绍的在vue中用express-mock构建mock服务的方法。希望对大家有帮助。如果你有任何问题,请给我留言,边肖会及时回复你。非常感谢您对我们网站的支持!