有人知道为什么这不起作用吗?
我的 API 调用:
import firebase from 'react-native-firebase';
export default function getAuth() {
return new Promise((resolve) => {
firebase.auth().onAuthStateChanged((user) => {
resolve(user);
});
});
}
我的单元测试失败,“预期调用一个断言,但收到零个断言调用”。
import firebase from 'react-native-firebase';
import getAuth from '../'; // eslint-disable-line
jest.mock('react-native-firebase', () => {
return {
auth: () => {
return {
onAuthStateChanged: () => {
return Promise.resolve({
name: 'Shaun',
});
},
};
},
};
});
it('resolves a promise containing the user', async () => {
expect.assertions(1);
const response = await getAuth();
expect(response).toEqual({ name: 'Shaun' });
});
最佳答案
- 您返回了已解决的 Promise => 此后不会再调用任何内容。
- 您的
onAuthStateChanged
是一个带有回调的函数
相反,将 onAuthStateChanged
的实现替换为:
onAuthStateChanged: jest.fn(cb => cb({ name: 'Shaun' }));
关于firebase - 如何模拟/ stub react-native-firebase?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50853124/