swift – 如何伪造Realm结果进行测试

swift – 如何伪造Realm结果进行测试,第1张

概述我编写了一个测试来验证函数是否被调用: func test_getTaskLists_doNotCreateOrUpdateTaskListToStorageWhenSynchedLocally() { ... let (datasource, restAPI, fakeTaskListStorage) = ... datasource.getTaskLists( 我编写了一个测试来验证函数是否被调用:
func test_getTaskLists_doNotCreateOrUpdateTaskListToStorageWhenSynchedLocally() {   ...        let (datasource,restAPI,fakeTaskListStorage) = ...    datasource.getTaskLists() { (taskLists,error) -> VoID in      ...      XCTAssertEqual(1,fakeTaskListStorage.readAllinvocationCount)      ...          }...  }

该函数被模拟绕过超级实现,问题是该函数返回一个结果,我无法想出构建/模拟以返回一个有效的对象,所以编译器停止抱怨…我知道我可以调用super.readAll()但是在这里我实际上想要将我的测试数据(fakeTaskLists)转换为假的Result对象,这样每个人都很高兴…不确定这是否可能

class FakeTaskListsstorageRealm : TaskListStorageRealm {    var fakeTaskLists:[TaskList]?    overrIDe func readAll() -> RealmSwift.Results<TaskList> {      readAllinvocationCount += 1      //Here I want to return fakeTaskLists somehow...    }}
无法直接实例化结果.子类化结果也不允许.我认为最好的方法是使用ResultsWrapper等协议隐藏结果,而不是直接使用结果.

但是一个简单的解决方法是在测试时使用内存中的Realm.
可以使用内存Realm编写FakeTaskListsstorageRealm的readAll(),如下所示:

class FakeTaskListsstorageRealm : TaskListStorageRealm {    var fakeTaskLists:[TaskList]?    overrIDe func readAll() -> RealmSwift.Results<TaskList> {        readAllinvocationCount += 1        return try! Realm(configuration: Realm.Configuration(inMemoryIDentifIEr: "test")).objects(TaskList.self)    }}
总结

以上是内存溢出为你收集整理的swift – 如何伪造Realm结果进行测试全部内容,希望文章能够帮你解决swift – 如何伪造Realm结果进行测试所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1089321.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存