taro-s4s
Version:
Nerv-multi多端开发解决方案
68 lines (56 loc) • 1.98 kB
JavaScript
import navigator from './__mock__/mockNavigator'
import Taro from '../index.js'
Taro.initNativeApi(Taro)
describe('geolocation', () => {
describe('getLocation', () => {
test('不支持定位时返回执行fail', async () => {
global.navigator = {}
const success = jest.fn()
const fail = jest.fn()
const complete = jest.fn()
const expectMsg = '本设备不支持定位功能'
expect.assertions(6)
return Taro.getLocation({
success,
fail,
complete
}).catch((err) => {
expect(success.mock.calls.length).toBe(0)
expect(fail.mock.calls.length).toBe(1)
expect(complete.mock.calls.length).toBe(1)
expect(complete.mock.calls[0][0]).toEqual({ errMsg: expectMsg })
expect(fail.mock.calls[0][0]).toEqual({ errMsg: expectMsg })
expect(err.errMsg).toEqual(expectMsg)
})
})
test('定位功能返回正常参数', () => {
global.navigator = navigator
const success = jest.fn()
const fail = jest.fn()
const complete = jest.fn()
const expectData = {
latitude: expect.any(Number),
longitude: expect.any(Number),
speed: expect.any(Number),
accuracy: expect.any(Number),
altitude: expect.any(Number),
verticalAccuracy: expect.any(Number),
horizontalAccuracy: expect.any(Number),
timestamp: expect.any(Number)
}
expect.assertions(6)
return Taro.getLocation({
success,
fail,
complete
}).then((res) => {
expect(success.mock.calls.length).toBe(1)
expect(fail.mock.calls.length).toBe(0)
expect(complete.mock.calls.length).toBe(1)
expect(complete.mock.calls[0][0]).toEqual(expect.objectContaining(expectData))
expect(success.mock.calls[0][0]).toEqual(expect.objectContaining(expectData))
expect(res).toEqual(expect.objectContaining(expectData))
})
})
})
})