ios - 如何为单元测试创建假 Realm 结果
问题描述
但是,可能是重复的;接受的答案没有回答我的问题: How to fake Realm Results for tests
在对我的视图控制器进行单元测试时,我想在我的模拟对象上返回一个假的 Realm 'Results' 对象。(类似于如何在 C# 中使用 Moq 完成)
是否可以创建由我的测试数据组成的领域结果对象,而无需创建内存领域数据库,将所需数据添加到其中然后查询对象?
模拟对象:
class MockRealmRepository: RealmRepository {
override init() {}
var getAccountRolesCallCount = 0
var getAccountRolesReturnValue: Results<AccountRole>!
override func getAccountRoles() -> Results<AccountRole> {
getAccountRolesCallCount += 1
return getAccountRolesReturnValue
}
}
Mock的单元测试实现:
class CreateProfileViewControllerTests: XCTestCase {
private var mockRealmRepository: MockRealmRepository!
override func setUp() {
super.setUp()
mockRealmRepository = MockRealmRepository()
}
func testCheckUsersRole_Valid() {
let admin = AccountRole(role: "Admin")
let user = AccountRole(role: "User")
let guest = AccountRole(role: "Guest")
// Create a Results<AccountRole>() containing the above AccountRole objects
mockRealmRepository.getAccountRolesReturnValue = // Assign my Results<AccountRole> object here
}
}
解决方案
我可能会创建一个用于测试的 InMemory 领域并将其注入到您的测试中。
基本上你会:
- 在内存中创建一个领域
- 将三个角色添加到内存领域
- 使用普通的
realm.objects(AccountRole.self)
推荐阅读
- pytorch - 添加 2 个不同大小的 pytorch 张量
- iframe - Microsoft Dynamics CRM - 实体 iframe 上的更改 - 未保存的通知
- performance - 从 Ubuntu 迁移到 Centos 7 后磁盘性能不佳
- python - Replacing for-loop with better alternatives in panda dataframes for similarity measurement
- php - 如何获取条件 HTML 字段值
- java - 每当在 Android Kotiln 中的搜索过滤器上搜索时,列表都不会显示在 RecyclerView 中
- powershell - `Start-Process` 找不到 PATH 中存在的文件,即使给定了文件的绝对路径
- javascript - Firebase 存储 - 获取实际数据而不是 downloadURL
- jquery - 如何更改 node.js 中的日期格式
- python - Python:如何使用 for 循环执行我的代码 5 次?