首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Dagger2进行仪表化测试-如何引用伪造的存储库?

使用Dagger2进行仪表化测试-如何引用伪造的存储库?
EN

Stack Overflow用户
提问于 2020-03-19 09:55:32
回答 1查看 51关注 0票数 0

我的目标是用Espresso测试一个应用程序。

第一个屏幕的活动取决于从存储库接收的设置。存储库检查用户是否在共享首选项中保存了位置首选项。如果他有,它将转移到主要活动。这就是我要测试的逻辑部分。

我想用伪存储库(代表共享偏好的HashMap)来实现一致性。如果存储库为空(基本状态),则运行并通过测试。但是,我想测试如果保存了位置,应用程序是否会向前移动。

有问题的测试:

代码语言:javascript
运行
复制
@Test
fun onLaunch_withLocationSaved_checkMainActivityIsShown() {
    fakeRepository.saveLocation("40,80")

    ActivityScenario.launch(FirstScreenActivity::class.java)
    onView(withText(R.string.welcome_message)).check(matches(not(isDisplayed())))
}

如何获得对fakeRepository的引用,以便能够保存ViewModel将从中读取的位置?

如果它是这样创建的(这破坏了注入点):

代码语言:javascript
运行
复制
@Before
fun init() {
    fakeRepository = FakeSimpleRepository()
    fakeRepository.saveLocation("")
    viewModel = FirstScreenViewModel(fakeRepository)
}

视图模型被注入了不同的fakeRepository对象(我将地址与调试器进行了比较)。

我遵循了Google的codelabs和官方文档,如何使用我的应用程序设置Dagger。他们的例子并没有展示如何引用存储库来进行更改。

EN

回答 1

Stack Overflow用户

发布于 2020-03-19 19:29:28

This博客介绍了您想要实现的目标

这个想法是你必须重写你的dagger模块来注入mock对象。然后创建一个自定义运行器类来覆盖应用程序类。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60749890

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档