Component是一个强大的Vue功能,允许扩展基本HTML元素以封装可重用代码。
vue.js - 如何在 cypress 组件测试中存根/模拟 http 请求
我有一个配置文件对话框,它可以在其中获取当前用户的数据: 配置文件对话框.vue 我有一个配置文件对话框,它可以在其中获取当前用户的数据: ProfileDialog.vue <template> <div> <dialog-base :save-button-action="save" :cancel-button-action="cancelAction" title="Profile" :tab-items="['profile', 'car']" @tabidxChanged="tabidxChanged"> <v-tabs-items v-model="tabsidx"> <v-tab-item> <v-row class="mt-n1"> <v-col cols="12"> <v-text-field v-model="name" label="Name" :rules="notEmptyRule" outlined name="confirm_password" persistent-placeholder ></v-text-field> </v-col> </v-row> ... display other fields </dialog-base> </template> <script> import DialogBase from "@/components/DialogBase.vue"; import NewCarDialog from "@/components/NewCarDialog"; import {WebsocketClient} from "@/mixins/WebsocketClient"; export default { name: 'profile-dialog', components: {DialogBase,NewCarDialog}, props: { redirectionReason: {String, default: null} }, mixins: [WebsocketClient], data() { return { username: "", password: "", carType: { id: null, name: "", }, car: { licensePlate: "", }, confirm_password: "", email: "", phoneNumber: "", name: "", new_car_dialog:false, show: false, snackBar: false, snackbarText: "", tabsidx: 0, } }, computed: { ... }, methods: { ... onWebsocketEvent(message) { this.updateBatteryPercentage(message.batteryPercentage); }, async load_data() { const person_response = await this.axios.get(`/api/person/current-person`); if (person_response.status === 200) { this.name = person_response.data.name; this.email = person_response.data.email; this.username = person_response.data.username; this.phoneNumber = person_response.data.phoneNumber; this.carType = person_response.data.car.carType; this.car = person_response.data.car; } }, ... }, async mounted() { await this.load_data(); this.connect("carBatteryChange", this.car.id); }, }; </script> <style> .v-input { font-size: 1.6em; } ... </style> 我希望 /api/person/current-person http 请求模拟出模拟响应,这样我在组件测试中就可以检查数据是否正确显示。 Profile.spec.js describe("ProfileDialog", () => { beforeEach(() => { mount( { vuetify, render(h) { return h(ProfileDialog, { methods: { async load_data() { console.log("THIS NEVER CALLED"); const person_response = { id: 8, name: "myname", username: "myname", password: null, email: "[email protected]", phoneNumber: "701234567", roles: [ { id: 1, name: "role_user", }, ], car: null, }; }, }, }); }, }, { extensions: { plugins: [Vuetify] } } ); cy.wait(1000); }); it("checks if profile data is fetched properly", () => { cy.wait(5000); }); }); 实际上我尝试了很多解决方案来模拟这个请求,但我被困住了,无法完成这项工作。 顺便说一句,每个 axios 请求都是用守卫拦截的: const hasRightForPage = async (to) => { const response = await Vue.prototype.axios.post(`/api/hasRightForPage`,{ route: to.path }); return response.data; } router.beforeEach(async (to, from, next) => { const resp = await hasRightForPage(to); if (resp === 'hasRight') next(); else if(resp === 'tokenExpired') next({ path: '/login', }); else next(false); }); 在我的 cypress 测试中,我总是得到:错误:请求失败,状态代码 404 希望有人能给我指出正确的方向,我如何伪造这个 api 调用,以测试我的组件是否显示当前用户的数据(来自 http 响应) 您尝试过 Cypress 拦截吗?让应用程序中的 axios 调用继续进行,并在 Cypress 中使用 staticResponse 进行拦截。 before(() => { cy.intercept('/api/person/current-person', { id: 8, name: "myname", ... }) mount(...) }) 此存储库用于 React 组件测试,但对于 cy.intercept 来说,情况是相同的。以下是一些 Axios 示例: https://github.com/muratkeremozcan/multi-stage-caching/tree/master/cypress/component/network
当我从服务器获取数据时,例如 [{methodName:mothodValue},{methodName:mothodValue}] 然后我想要动态生成方法,比如 方法: { functionArray.forEach(函数(项目){ 项目。
在我的项目中使用谷歌地图,但运行时不解析组件 使用地图在 web 应用程序中查找位置 main.js: 从“@fawmi/vue-google-maps”导入 VueGoogleMaps; 常量应用程序 =
Vue.js:观察深度嵌套组件结构中的嵌套属性更改和触发方法
我正在使用 Vue.js 应用程序,我需要在深度嵌套的组件结构中观察嵌套属性 (isChecked) 的更改。我的目标是每当
我知道以前有人问过这个问题,但我尝试过的任何方法都不起作用,即使是官方文档 我有一个视图示例 vue 组件,我想传递一个 prop 以便我可以显示它 我知道以前有人问过这个问题,但我尝试过的任何方法都不起作用,甚至是官方文档 我有一个视图示例 vue 组件,我想传递一个 prop 以便我可以显示它 <template> <div class="container"> <div class="row justify-content-center"> <div class="col-md-8"> <div class="card"> <div class="card-header">Example Component</div> <div class="card-body"> {{ title }} </div> </div> </div> </div> </div> </template> <script setup> import { defineProps } from "vue"; const props = defineProps({ title: String }) console.log(props.title); </script> app.js import { createApp } from 'vue'; import Example from './components/ExampleComponent.vue'; const app = createApp({}); app.component('example', Example); app.mount('#app'); 我这样称呼我的组件 <example :title="xgfgdgdgsgdg"></example> 模板中没有显示任何内容,config.log() 也显示 undefined 我正在使用最新版本的vue3并使用Vite构建 将 prop 与 : 一起使用意味着您将 JS 表达式分配给该 prop。在你的情况下,它只是一个未定义的标识符。 使用正确的表达方式: <example :title="'xgfgdgdgsgdg'"></example> 或者删除 : 使道具成为字符串: <example title="xgfgdgdgsgdg"></example>
我有一个如下所示的表单字段数组,我想使用事件和函数渲染动态表单 [...{ 标签:“标志”, 字段:“图像”, 组成...
从vuetify的官方文档中可以看到,开关的标签有自己预先定义的颜色。我如何覆盖它们以获得黑色文本?我将开关作为全局的支柱传递
我有以下 Vue 3 组件 image-template-row-item ,它具有 prop templates-types 它在组件的 props 中定义: 现在这个 prop 总是作为未定义传递给 comp...
我正在尝试创建一个将提交的数据发送到数据库的表单: 我是 vue 新手,仍在阅读文档,如果答案在文档中,请提醒我。下面我...
我正在尝试创建一个将提交的数据发送到数据库的表单: 我是 vue 新手,仍在阅读文档,如果答案在文档中,请提醒我。下面我...
Vue 3 中切换语言时重新渲染 OpenWeatherMap 组件
我是使用 Vue 3 的初学者,为了学习它,我正在使用 OpenWeatherMap API 开发一个简单的天气 Web 应用程序。我使用 vue-i18n 库添加了多语言支持,一切正常。但是...
我添加了一个vue多选组件...但我想用css样式自定义它。我已经添加了一些 css 样式,但不能做我想做的一切。就像我想改变选项高度一样,
对于 vue 组件下面发布的代码,它是一个子组件,托管在特定的父组件中。当我通过 vModelCheckGeoTIFFOverlayBandAverages 进行两种方式绑定时,引入对
我刚刚开始使用Vue.js,我试图在按下按钮时触发muose点击。消息问题是:无法安装应用程序:安装目标选择器“#app”返回 null。这……
我认为这是我的辅助函数内部的范围问题,我已经在我的组件中成功实现了相同的逻辑,并且它工作得很好 我已经使用了一个可组合函数...
如何使用 vue.js 3 更改 v-calendar 默认颜色
在此输入图像描述 ... 在此输入图片描述 <template> <v-row> <v-col> <v-sheet> <v-calendar class="custom"></v-calendar> </v-sheet> </v-col> </v-row> </template> <style> .custom { background-color: antiquewhite; color: brown; } .custom button { color: crimson; background-color: aquamarine; box-shadow: none; } </style> 自定义按钮颜色似乎并不能覆盖组件中的所有按钮。 “今日”按钮的颜色不会改变。我怎样才能覆盖这个按钮的颜色? 如何添加 @click 函数,它仅在单击按钮时起作用,而不是组件中的其他元素。 我尝试了这个,但它不适用于所有按钮 .custom button { color: crimson; background-color: aquamarine; box-shadow: none; } 第二个问题 我执行 @click 功能,但我希望它仅在单击按钮而不是整个组件时才起作用 就像当我点击日期名称时它也会运行功能。 <v-calendar @click="doSomething"> </v-calendar> 今天的默认颜色是主要颜色,您可以像下面这样覆盖它: <v-calendar color="red"></v-calendar>
我有一个父搜索组件,它根据搜索参数更改加载数据,并且它有一个子组件,基本上是为了分离复杂的逻辑而创建的,例如 ,它会触发 eve...
简短版本: 我在组件的方法中使用 HTML 生成一个字符串,但我不知道如何使用作用域 CSS 来设置该 HTML 的样式,因为它缺少用于作用域的 data 属性。 轻微...
我正在尝试在 vue js 3 中创建自定义无线电组件,根据官方文档,它可以使用 v-model 来完成。我尝试应用它,但是第一次渲染该组件时......
使用 和 对象作为 props 将多个属性绑定到组件 - Vue 3
我在使用对象将多个属性绑定到组件时遇到了一些问题。当我在任何其他页面上使用此组件时,我希望传递匹配 ContentOptions 接口的道具...