Javascript Jest模拟-将值插入测试文件
我在将值插入测试文件时遇到问题:Javascript Jest模拟-将值插入测试文件,javascript,unit-testing,testing,jestjs,Javascript,Unit Testing,Testing,Jestjs,我在将值插入测试文件时遇到问题: import device from '../device' let execute = () => { if (device.isAndroid()) { return true else { return false } } 现在查看测试文件: jest.mock('../device') import device from '../device' describe('when the device is Andro
import device from '../device'
let execute = () => {
if (device.isAndroid()) {
return true
else {
return false
}
}
现在查看测试文件:
jest.mock('../device')
import device from '../device'
describe('when the device is Android', () => {
let device
beforeEach(() => {
device = jest.fn().mockImplementation(() => {
return {
isAndroid: () => { return true }
}
})
})
it('returns true', () => {
let results = execute()
expect(result).toEqual(true)
})
})
测试失败并返回false。我做错了什么?您需要使用jest spy模拟“../device”,并在其上模拟实现:
jest.mock('../device', ()=>{return {isAndroid: jest.fn()}})
import device from '../device'
describe('when the device is Android', () => {
beforeEach(() => {
device.isAndroid.mockImplementation(() => true)
})
it('returns true', () => {
let results = execute()
expect(result).toEqual(true)
})
})
谢谢你的回答,但是我得到了以下错误:TypeError:device.isAndroid不是一个函数-在executesrc/execute.js。TypeError:无法读取未定义的-at对象的属性“mockImplementation”。src/test/execute.spec.js有什么想法吗?不确定,更新了我的答案,将模拟直接移动到isandroid。首先,你是个天才!!我让它工作了。请更新以上答案,我会将其标记为正确,以确保其他人不会误入歧途。第一行应该是jest.mock'../device',=>{return{isAndroid:jest.fn}}。另外,删除let device,因为import语句已经定义了设备。这使它起作用。