ios - 如何使用闭包创建单元测试用例
问题描述
我在我的应用程序中创建了单元测试用例,到目前为止很好。我在我的项目中使用MVVM并且我有 API 请求success & failure
closures
。我怎样才能为此制作测试用例。
我尝试了什么:
var mockAPIService: MockApiService!
override func setUp() {
super.setUp()
mockAPIService = MockApiService()
sut = PhotoListViewModel(apiService: mockAPIService)
}
func test_fetch_photo() {
sut.apiSuccessClouser = { dataValue in
print("apiSuccessClouser") // This doesnot executes
XCTAssert(dataValue)
}
}
但print("apiSuccessClouser")
不执行..我只是在寻找让 clouser 与单元测试一起工作。
解决方案
将 dataValue 存储在某个变量中并使用期望等待您的闭包执行然后进行测试。注意:这个例子是用 swift 4 编写的
let yourExpectationName = expectation(description: "xyz")
var dataToAssert = [String]() //replace with you data type
sut.apiSuccessClouser = { dataValue in
dataToAssert = dataValue
yourExpectationName.fulfill()
}
waitForExpectations(timeout: 3) { (error) in //specify wait time in seconds
XCTAssert(dataToAssert)
}
推荐阅读
- extjs - 禁用登录页面中的右键单击 extjs 不起作用
- php - Laravel 表单请求不更新可空字段
- php - 阿拉伯语编码问题الÙ...Ù... php mysqli
- php - sqlite3 和 pdo_sqlite 未在 php apache2 localhost 中加载,但在 php cmd 窗口中加载
- sed - 从Unix中的文件中删除带有子字符串的行
- angular - 表的 cdk-virtual-scroll-viewport 未正确显示搜索结果
我试图对具有大数据大小的表使用虚拟滚动选项。当我使用它时,它会正确显示滚动条。但是由于想要启用搜索,我使用了“table datatable”。但它没有正确显示搜索结果。如何解决问题?
<cdk-virtual-scroll-viewport [itemSize] = "20"> <table datatable >
- c# - 在 iframe 中使用 RedirectToAction 后,ASP.NET MVC 会话被重置
- sql - 如何将json解析为行而不是列?
- jquery - 如何在不使用 Shopify 中的任何应用的情况下添加使用 google 或 facebook 登录?
- php - 如何在moodle中显示统计数据?