【发布时间】:2019-11-22 11:39:32
【问题描述】:
我有一个带有锚标记的组件,该组件带有关联的处理程序 onSelectLink()。
<a
:href="$t('footer.termsUrl')"
target="_blank"
name="termsAndConditions"
@click="onSelectLink($event.target.name)">{{ $t('terms') }}</a>
onSelectLink() 函数...
onSelectLink (buttonName) {
buttonName === 'termsAndConditions'
? this.logButtonClick(ANALYTICS.TERMS_AND_CONDITIONS)
: this.logButtonClick(ANALYTICS.PRIVACY_POLICY)
}
我的单元测试
describe('onSelectLink()', () => {
it('[positive] should track analytics when user selects `Terms and Conditions` link', () => {
const buttonName = 'termsAndConditions'
jest.spyOn(wrapper.vm, 'onSelectLink')
wrapper.find('a').trigger('click')
wrapper.vm.onSelectLink(buttonName)
expect(wrapper.vm.logButtonClick).toHaveBeenCalledWith(ANALYTICS.TERMS_AND_CONDITIONS)
})
it('[positive] should track analytics when user selects `Privacy Policy` link', () => {
const buttonName = 'privacyPolicy'
jest.spyOn(wrapper.vm, 'onSelectLink')
wrapper.find('a').trigger('click')
wrapper.vm.onSelectLink(buttonName)
expect(wrapper.vm.logButtonClick).toHaveBeenCalledWith(ANALYTICS.PRIVACY_POLICY)
})
我的问题是:
这些测试是否每个都调用 onSelectLink() 两次?
我真的需要使用“wrapper.find('a').trigger('click')”
这是确保 onSelectLink() 使用正确的参数调用的好/稳健的测试吗?
当我注释掉“wrapper.find('a').trigger('click')”时,测试似乎仍然通过了。我以为我必须触发 DOM 事件,然后调用处理程序。
【问题讨论】:
标签: javascript vue.js jestjs vue-test-utils