我在Vue应用中进行了一次Jest测试,该测试模拟了API调用,但是验证了预期的URL是否被调用,即
it('download support file', async () => {
let matchedUrl = null
const $http = {
get: jest.fn(url => {
matchedUrl = url
return Promise.resolve({
status: 200,
data: {}
})
})
}
const wrapper = createWrapper(defaultProps, $http)
wrapper.find('[data-cy="support-file-download"]').trigger('click')
expect(matchedUrl).toEqual('/api/foo/bar')
})
如果URL与/api/foo/bar
不同,则测试正确失败。但是,如果像这样将expect
调用移至模拟函数中
it('download support file', async () => {
const $http = {
get: jest.fn(url => {
expect(url).toEqual("NOT THE CORRECT URL")
return Promise.resolve({
status: 200,
data: {}
})
})
}
const wrapper = createWrapper(defaultProps, $http)
wrapper.find('[data-cy="support-file-download"]').trigger('click')
})
然后我在控制台上看到警告/错误,表明expect
调用失败,但是测试通过了,为什么?
有没有一种方法可以使用类似于第二个示例的方法,但是预期失败会导致测试失败?