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结果进行测试所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)