如何在 Vue.js/Nuxt.js 中为 RepositoryFactory 编写测试

     2023-02-22     247

关键词:

【中文标题】如何在 Vue.js/Nuxt.js 中为 RepositoryFactory 编写测试【英文标题】:How to write test for RepositoryFactory in Vue.js/Nuxt.js 【发布时间】:2022-01-21 06:03:34 【问题描述】:

夏天

我已经为 Vue.js/Nuxt.js 应用程序中的 API 连接实现了 RepositoryFactory 模式。https://medium.com/canariasjs/vue-api-calls-in-a-smart-way-8d521812c322

hogeRepository.ts

import  NuxtAxiosInstance  from '@nuxtjs/axios'

type queryData = 
  q: string | null


export const HogeRepository = ($axios: NuxtAxiosInstance) => (
  createResource (apiVersion: Number) 
    return `v$apiVersion/meetings`
  ,

  get (data: queryData, version = 1) 
    const url = `$this.createResource(version)`
    return $axios.get(url, 
      params:  ...data 
    )
  ,
)

repository.ts

import  HogeRepository  from '~/api/hogeRepository'

export interface Repositories 
  hoge: typeof HogeRepository


const repositories = 
  hoge: HogeRepository


export const RepositoryFactory = 
  get: (key : keyof Repositories) => repositories[key]

hoge.vue

async test () 
  await RepositoryFactory.get('hoge')(this.$axios).get()

现在我正在尝试为这些文件编写测试代码。 我想知道如何为他们编写测试代码。

我尝试过的

我试着写一些测试代码。 但它在this.$axios 上显示错误Object is possibly 'undefined'.ts(2532)

repositoryFactory.spec.ts

import  RepositoryFactory  from '~/api/repositoryFactory'

describe('RepositoryFactory', () => 
  it('Should create repositories', () => 
    const repositoryFactory = RepositoryFactory.get('hoge')(this.$axios) <- error on this
  )
)

【问题讨论】:

【参考方案1】:

你必须模拟 $axios 来测试它。检查这个link。

jest.mock('axios', () => (
  get: Promise.resolve('value')
))

【讨论】:

我想为 vue.js (nuxt.js) 中的每个组件加载和填充数据

】我想为vue.js(nuxt.js)中的每个组件加载和填充数据【英文标题】:Iwanttoloadandpopulatethedataforeachcomponentinvue.js(nuxt.js)【发布时间】:2017-11-2807:56:44【问题描述】:我按如下方式启动项目。vueinitnuxt/express我的目录是...components|-slider.vu... 查看详情

前端vue进阶实战:从零打造一个流程图拓扑图项目nuxt.js+element+vuex(代码片段)

本系列教程是用Vue.js+Nuxt.js+Element+Vuex+开源js绘图库,打造一个属于自己的在线绘图软件,最终效果:topology.le5le.com。如果你觉得好,欢迎给文章和开源库点赞,让我们更有动力去做好!本系列教程源码地址:Github一、创建项目框... 查看详情

如何在 R 中为 ggplot 的每个方面添加 R2?

】如何在R中为ggplot的每个方面添加R2?【英文标题】:HowtoaddR2foreachfacetofggplotinR?【发布时间】:2020-05-2508:06:13【问题描述】:有没有办法首先将构面标签从1:3更改为c(good,bad,ugly)。另外,我想为每个方面添加R2值。下面是我的代... 查看详情

如何通过 javascript/typescript 获取“事件”对象的特定元素

】如何通过javascript/typescript获取“事件”对象的特定元素【英文标题】:Howtoget"Event"object\'sspecificelementbyjavascript/typescript【发布时间】:2022-01-1823:53:30【问题描述】:总结我在Vue.js/Nuxt.js应用程序中通过Vuetify.js实现了选择... 查看详情

在 ggplot 中为多个类别制作配对点

】在ggplot中为多个类别制作配对点【英文标题】:makingpairedpointsinggplotformultiplecategories【发布时间】:2022-01-1605:15:06【问题描述】:我知道这个问题之前已经回答过了,但它并没有按照我的意愿去做。我在R中有一个数据框。我想... 查看详情

如何在箱线图中添加一条线?

】如何在箱线图中添加一条线?【英文标题】:Howtoaddalineinboxplot?【发布时间】:2018-08-0914:36:35【问题描述】:我想在箱线图中的“均值”之间添加线条。我的代码:library(ggplot2)library(ggthemes)Gp=factor(c(rep("G1",80),rep("G2",80)))Fc=factor(... 查看详情

如何在 slick 3.0 中将 Rep[T] 转换为 T?

】如何在slick3.0中将Rep[T]转换为T?【英文标题】:HowtoconvertRep[T]toTinslick3.0?【发布时间】:2015-07-2414:56:55【问题描述】:我使用了一个从slick代码生成器生成的代码。我的表有超过22列,因此它使用HList它生成1个类型和1个函数:ty... 查看详情

如何手动将 Qt .rep 复制到 .h,然后将它们 moc 到 .cpp

】如何手动将Qt.rep复制到.h,然后将它们moc到.cpp【英文标题】:HowtomanuallyrepcQt.repto.handthenmocthemto.cpp【发布时间】:2019-02-1523:34:42【问题描述】:我试图在我的.rep文件上手动调用repc,然后在头输出文件上运行moc。repc运行成功,... 查看详情

在 GIT 中的 Rep. 中生成发行说明

...储库,我想在其中提及每个更改、发行说明和日志文件。如何生成这些文件?【问题讨论】:你想要一些东西来生成日志文件和发行说明,或者你想问如何将它们添加到git。为什么这有一个C++标签?@doctorlove回答你:我想生成日... 查看详情

如何在 ZeroMQ 的 REQ-REP 模式中获取请求者的公共 IP?

】如何在ZeroMQ的REQ-REP模式中获取请求者的公共IP?【英文标题】:HowtogetpublicIPofrequesterinREQ-REPpatternofZeroMQ?【发布时间】:2013-05-2005:12:19【问题描述】:听起来在ZeroMQ中按照传统的UNIX套接字使用套接字是没有意义的。我基于对Zero... 查看详情

在 ggplot2 中为 facet_wrap 添加下标和符号

】在ggplot2中为facet_wrap添加下标和符号【英文标题】:Addingsubscriptsandsymbolstofacet_wrapinggplot2【发布时间】:2021-10-2519:18:01【问题描述】:我正在尝试创建一个随时间变化的某些天气状况的2x2刻面图,但在为某些刻面标题添加度数... 查看详情

如何在 ActiveRecord DadaProvider 中为每个模型安装场景

】如何在ActiveRecordDadaProvider中为每个模型安装场景【英文标题】:HowtoinstallthescenarioinActiveRecordDadaProviderforeachmodel【发布时间】:2014-08-2009:02:14【问题描述】:如何在yiiActiveRecordDadaProvider中为每个模型安装场景;默认应该更新publi... 查看详情

如何在 Swift 中为 UIBarButtonItem 设置动作

】如何在Swift中为UIBarButtonItem设置动作【英文标题】:HowtosettheactionforaUIBarButtonIteminSwift【发布时间】:2014-08-2918:01:33【问题描述】:如何在Swift中设置自定义UIBarButtonItem的操作?以下代码成功将按钮放置在导航栏中:varb=UIBarButton... 查看详情

如何在javascript中为函数添加回调

】如何在javascript中为函数添加回调【英文标题】:Howtoaddacallbacktoafunctioninjavascript【发布时间】:2011-12-0306:06:34【问题描述】:我有两个javascript函数functionone()dosomethinglong...likewritingjpgfileondiskfunctiontwo()dosomethingfast...likeshowthefile我... 查看详情

如何在 UITableView 中为 UITableViewStyleGrouped 修复边框

】如何在UITableView中为UITableViewStyleGrouped修复边框【英文标题】:HowtofixborderinUITableViewfortheUITableViewStyleGrouped【发布时间】:2011-10-0309:49:51【问题描述】:对于UITableViewStyleGroupedUITableView,在表格视图下方绘制了一条额外的小线我... 查看详情

如何在 Swift 中为 UIImage 着色?

】如何在Swift中为UIImage着色?【英文标题】:HowcanIcoloraUIImageinSwift?【发布时间】:2015-10-2611:55:09【问题描述】:我有一张名为arrowWhite的图片。我想将此图像着色为黑色。funcattachDropDownArrow()->NSMutableAttributedStringletimage:UIImage=UIIm... 查看详情

如何在highcharts中为图例添加工具提示

】如何在highcharts中为图例添加工具提示【英文标题】:howtoaddtooltiptolegendsinhighcharts【发布时间】:2021-12-1801:04:42【问题描述】:有什么方法可以在Highcharts中为图例添加工具提示?在示例(https://jsfiddle.net/bdkxzf6t/)中,当我们将鼠... 查看详情

如何在hibernate中为count(*)编写查询

】如何在hibernate中为count(*)编写查询【英文标题】:Howtowriteaqueryinhibernateforcount(*)【发布时间】:2013-06-2708:21:03【问题描述】:我想在Hibernate中执行下面的查询?selectcount(*)fromloginwhereemailid=\'something\'andpassword=\'something\'【问题... 查看详情