我正在用React Native构建一个应用程序。我想尽量减少与数据库通信的频率,所以我大量使用AsyncStorage。尽管DB和AsyncStorage之间的转换中存在大量的错误空间。因此,我想确保AsyncStorage具有我认为通过针对它运行自动化测试的数据。令人惊讶的是,我还没有找到任何有关如何在网上做的信息。我自己做的尝试还没有解决。如何使用Jest测试异步存储?
使用玩笑:
it("can read asyncstorage",() => {
return AsyncStorage.getItem('foo').then(foo => {
expect(foo).not.toBe("");
}); });
这种方法失败,出现错误:
TypeError: RCTAsyncStorage.multiGet is not a function
卸下回报会使其无需等待值立刻运行,并且不恰当地通过测试。
我腹背受敌完全相同的错误,当我试图测试其使用的await关键字:
it('can read asyncstorage', async() => {
this.foo = "";
await AsyncStorage.getItem('foo').then(foo => {
this.foo = foo;
});
expect(foo).not.toBe(""); });
如何成功运行针对AsyncStorage价值主张有什么建议?我宁愿继续使用Jest,但是如果它只能用一些替代测试库来完成,那么我可以使用它。
此解决方案仅适用于您的用例,下面的解决方案应该是可接受的解决方案! – Ouadie
@Ouadie它需要编辑,以便定义'multiGet'和'multiSet'。 @布赖恩案特别询问'multiGet'。我会挖掘我如何最终嘲笑我的,避免硬编码的响应'resolve()' – jaygooby
在我的测试中使用你的'测试'时'从'react-native-implementation.js''找不到模块'AsyncStorage''模拟 - 任何想法为什么? :) @jaygooby – jhm