Как получить свойство стиля элемента html в Vuejs + Jest test?
Используя jest
и @vue/test-utils
, чтобы проверить, есть ли у элемента textarea color
встроенный стиль, примененный в Vuejs.
Я установил ref
для текстового поля, и тесты для проверки существования текстового поля и его значения были успешными, но не удалось получить свойство color
из стиль элемента.
Ниже мой код компонента и теста:
<template>
<Post :post="post">
<QuestionCard ref="questioncard" :background="post.background">
<textarea
ref="posttext"
:style="{ color: post.color }"
class="text-center"
v-model="post.text"
disabled
/>
</QuestionCard>
</Post>
</template>
<script>
import Post from './Includes/Post';
import QuestionCard from '~/components/Posts/Includes/QuestionCard';
import { FeedPost } from '~/classes/FeedPost';
export default {
name: 'SingleItemPost',
components: {
Post,
QuestionCard,
},
props: {
post: {
type: FeedPost,
required: true,
},
},
};
</script>
import { Wrapper, shallowMount } from '@vue/test-utils';
import QuestionPost from '../QuestionPost.vue';
import { FeedPost } from '~/classes/FeedPost';
Wrapper.prototype.ref = function (id) {
return this.find({ ref: id });
};
describe('QuestionPost', () => {
let wrapper;
let post;
const text = 'text';
const color = 'color';
beforeEach(() => {
post = new FeedPost({
text,
color,
type: 'questionPost',
});
wrapper = shallowMount(QuestionPost, {
propsData: {
post,
},
});
});
it('should render correct elements', () => {
expect(wrapper.ref('questioncard').exists()).toBe(true); // OK
expect(wrapper.ref('posttext').exists()).toBe(true); // OK
});
it('should have correct value and style', () => {
const textarea = wrapper.ref('posttext');
expect(textarea.element.value).toBe(text); // OK
expect(textarea.element.style.getPropertyValue('color')).toBe(color); // failed
});
});
Я тоже пробовал с textarea.element.style.color
, но такой же.
Результат теста:
Expected: "color"
Received: ""
Итак, как я могу получить color
элемента textarea?