如何使用模拟来测试用笑话上传文件
How to use mocking for test uploading file with jest
我正在用 nuxt js 开发一个系统,我开玩笑说其中一部分我想上传一张图片。
这是我的 html 代码:
<input
id="photo"
ref="photo"
type="file"
name=""
class="form-control d-flex"
@change="uploadPhoto"
>
这是我在 nuxt js 中的上传照片功能:
uploadPhoto () {
const file = this.$refs.photo.files[0]
// upload photo
const formData = new FormData()
formData.append('photo', file)
const returnedData = await this.$axios.$post('/api/photo/upload', formData, {
headers: {
'Content-Type': 'multipart/form-data'
}
})
}
问题是:
如何开玩笑地模拟上传照片来测试我的代码?
我的笑话代码是这样的:
test('uploading photo test', () => {
wrapper = mount(UploadPhotoComponent, {
stubs: {
NuxtLink: true
},
mocks: {
$auth: {
loggedIn: true,
$storage: {
_state: {
'_token.local': 'api bearer token'
}
}
},
$axios: {
$post: jest.fn(() => {
return Promise.resolve({
status: 200,
message: 'photo was uploaded successfully.',
entire: []
})
})
}
}
})
})
我不知道如何使用 mock 来测试上传文件。
谁能帮帮我?
终于知道怎么做了
首先生成图像blob和文件
import fs from 'fs'
import path from 'path'
const dummyImgData = fs.readFileSync(path.join(__dirname, '../../libs/dummy-img-2.jpeg'))
const fbParts = [
new Blob([dummyImgData], {
type: 'image/jpeg'
}),
' Same way as you do with blob',
new Uint16Array([999999999999999])
]
const fbImg = new File(fbParts, 'sample.png', {
lastModified: new Date(2020, 1, 1),
type: 'image/jpeg'
})
并将其分配给 $refs
对象后:
wrapper.vm.$refs = {
photo: {
files: [
fbImg
]
}
}
我正在用 nuxt js 开发一个系统,我开玩笑说其中一部分我想上传一张图片。
这是我的 html 代码:
<input
id="photo"
ref="photo"
type="file"
name=""
class="form-control d-flex"
@change="uploadPhoto"
>
这是我在 nuxt js 中的上传照片功能:
uploadPhoto () {
const file = this.$refs.photo.files[0]
// upload photo
const formData = new FormData()
formData.append('photo', file)
const returnedData = await this.$axios.$post('/api/photo/upload', formData, {
headers: {
'Content-Type': 'multipart/form-data'
}
})
}
问题是:
如何开玩笑地模拟上传照片来测试我的代码?
我的笑话代码是这样的:
test('uploading photo test', () => {
wrapper = mount(UploadPhotoComponent, {
stubs: {
NuxtLink: true
},
mocks: {
$auth: {
loggedIn: true,
$storage: {
_state: {
'_token.local': 'api bearer token'
}
}
},
$axios: {
$post: jest.fn(() => {
return Promise.resolve({
status: 200,
message: 'photo was uploaded successfully.',
entire: []
})
})
}
}
})
})
我不知道如何使用 mock 来测试上传文件。
谁能帮帮我?
终于知道怎么做了
首先生成图像blob和文件
import fs from 'fs'
import path from 'path'
const dummyImgData = fs.readFileSync(path.join(__dirname, '../../libs/dummy-img-2.jpeg'))
const fbParts = [
new Blob([dummyImgData], {
type: 'image/jpeg'
}),
' Same way as you do with blob',
new Uint16Array([999999999999999])
]
const fbImg = new File(fbParts, 'sample.png', {
lastModified: new Date(2020, 1, 1),
type: 'image/jpeg'
})
并将其分配给 $refs
对象后:
wrapper.vm.$refs = {
photo: {
files: [
fbImg
]
}
}