如何在Vue 3 Quasar组件中使用forEach循环和Jest.js测试标签

xmakbtuz  于 2023-10-14  发布在  Jest
关注(0)|答案(1)|浏览(98)

在我的Vue Quasar组件中,我有一个这样的徽章:

<q-badge
    :color="green"
    text-color="white"
    :label="`${value.toFixed(2)}%`"
/>

脚本如下:

<script setup>
    const props = defineProps({
        value: Number
    })
</script>

我想测试我的标签的3个不同的值
我的测试是这样的:

let wrapper
const values_for_badge = [10, 50, 90]
const componentBadge = (props) =>{
    wrapper = mount(Badge, {
        props:{
            ...props
        }
    });
};

describe('Badge with injected values', () =>{
    values_for_badge.forEach(value => {
        beforeEach(() => {
            componentBadge({value:value})
        });
        
        it(`The right text label for value ${value}`, () => {
            expect(wrapper.text()).toBe(`${value.toFixed(2)}%`)
        }
    })
})

当我运行它时,我有三个测试。一个是绿色,但2个是红色的,因为预期的结果与我所拥有的不同,例如,我期望10.00%或50.00%,但我总是90.00%,因此测试中的值总是数组values_for_badge中的最后一个,但在测试的描述中,我从循环forEach中获得了正确的值。我的应用程序中的组件运行良好,并具有正确的标签。
如何修改此组件的测试?谢谢你的帮助

jv4diomz

jv4diomz1#

我试着这样解决这个问题:

describe('Badge with injected values', () =>{
    values_for_badge.forEach(value => {
       
        it(`The right text label for value ${value}`, () => {
            componentBadge({value:value});
            expect(wrapper.text()).toBe(`${value.toFixed(2)}%`);
        }
    })
})

通常我在这个套件中有更多的测试,所以我想在这个例子中放置beforeEach。

相关问题