- 60
- 0
问题描述
在karma能不能测试hover触发的样式
问题出现的环境背景及自己尝试过哪些方法
在vue的环境下写东西,想到karma能创建浏览器环境,一般来说样式是能供mocha之类的拿到的。用mouseenter模拟hover,这样应该能拿到hover之后的样式。但是经过以下代码实现,发现并不能:
相关代码
test-hover.vue文件:
<template>
<div class="test-hover">
<div id="test3">测试字体hover后颜色</div>
</div>
</template>
<script>
export default {
name: 'TestHover'
}
</script>
<style lang="scss">
.test-hover {
#test3 {
color: red;
&:hover {
color: blue;
}
}
}
</style>
test-hover-spec.js文件:
import chai, { expect } from 'chai'
import { mount } from '@vue/test-utils'
import TestHover from '../../src/packages/test-hover'
const triggerMouseEnterEvent = function(elm) {
const name = 'mouseenter'
const evt = document.createEvent('MouseEvents');
evt.initEvent('mouseenter');
elm.dispatchEvent
? elm.dispatchEvent(evt)
: elm.fireEvent('onmouseenter', evt);
return elm;
};
describe('TestHover', () => {
it('可拿到hover之后的样式', () => {
const wrapper = mount(TestHover, {
attachToDocument: true,
propsData: {}
})
console.log(getComputedStyle(tt.element).color) // rgb(255, 0, 0)
const test3 = document.getElementById('test3')
const res = triggerMouseEnterEvent(test3, 'mouseenter')
console.log(getComputedStyle(res).color) // 期望拿到rgb(0, 0, 255)
})
})
你期待的结果是什么?
期望的结果是在mouseenter(模拟hover)之后,下一行log打印rgb(0, 0, 255)
- 共 0 条
- 全部回答
-
台灯很亮 普通会员 1楼
是的,在Karma中,你可以使用HTML5的
hover伪类来测试hover触发的样式。你可以创建一个简单的HTML元素,并使用:hover伪类来模拟鼠标悬停在元素上时的状态。然后,你可以使用Karma的watch功能来监控元素的状态,并在元素的hover状态发生改变时,更新你的测试结果。以下是一个简单的例子:
```javascript describe('My Test', function() { var myElement = document.getElementById('myElement'); var Karma = require('@karma-runner');
beforeEach(function() { Karma.start(); });
it('should have a hover state', function() { myElement.addEventListener('mouseover', function() { // 模拟鼠标悬停在元素上的状态 }); myElement.addEventListener('mouseout', function() { // 模拟鼠标移出元素上的状态 }); myElement.addEventListener('hover', function() { // 模拟元素的hover状态 });
// 观察元素的状态变化 expect(myElement.classList.contains('hover')).toBe(true);}); }); ```
在这个例子中,我们首先在
beforeEach函数中启动Karma。然后,我们在it函数中添加了三个事件监听器,分别模拟鼠标悬停、鼠标移出和元素的hover状态。最后,我们在测试用例中观察元素的状态变化,并使用expect函数来断言元素的hover状态。注意,这只是一个基本的例子,你可能需要根据你的具体需求来修改它。例如,你可能需要添加更多的事件监听器,或者改变监听器的执行顺序。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
