Swift 如何使用Quick测试我的服务类#异步的
我的问题是测试get服务是否正常工作? 我想在Quick/Nimble(Swift)中使用异步测试的技术 我想知道如何设置和获取测试类的变量?如何测试它?(异步) 正如您在代码中看到的,t_items是测试类的变量。当我测试它时,失败 但是当我在我的服务中测试t_items变量时(生产类),它通过了我在生产类中设置了这个t_items变量,但我不需要它 为什么我不能通过block返回数据? 我错过了什么 谢谢Swift 如何使用Quick测试我的服务类#异步的,swift,quick-nimble,Swift,Quick Nimble,我的问题是测试get服务是否正常工作? 我想在Quick/Nimble(Swift)中使用异步测试的技术 我想知道如何设置和获取测试类的变量?如何测试它?(异步) 正如您在代码中看到的,t_items是测试类的变量。当我测试它时,失败 但是当我在我的服务中测试t_items变量时(生产类),它通过了我在生产类中设置了这个t_items变量,但我不需要它 为什么我不能通过block返回数据? 我错过了什么 谢谢 it("getlist fetches data") { var servi
it("getlist fetches data") {
var service = Service()
dispatch_async(dispatch_get_global_queue(0, 0), { () -> Void in
service.getList("Test", success: { (data) -> Void in
t_items = data as? NSMutableArray // t_times declared in before each{}
}, error: { (error) -> Void in
})
})
expect(t_items.count).toEventually(equal(3), timeout:3) // error FAILS
expect(service.t_items).toEventually(equal(3), timeout: 3)// PASSES
}
除了实际问题之外,您还有一个经典的“数据竞赛”:变量
t_times
将在与expect
语句不同的线程上访问(修改)expect
将(大概)访问主线程上的变量,而您的完成处理程序将在其他任意非主线程上运行。不幸的是,expect
并不能神奇地解决这个问题。您需要确保语句t_items=data as?NSMutableArray
将设置在同一个线程上,expect
读取此变量标签,这是主线程。我有一个类似的问题:我将expect()调用放在回调中,它总是通过。我确实希望(数据)=3;expect(data)==7并且它通过了…除了您的实际问题之外,您还有一个经典的“数据竞赛”:变量t_times
将在与expect
语句不同的线程上访问(修改)expect
将(大概)访问主线程上的变量,而您的完成处理程序将在其他任意非主线程上运行。不幸的是,expect
并不能神奇地解决这个问题。您需要确保语句t_items=data as?NSMutableArray
将设置在同一个线程上,expect
读取此变量标签,这是主线程。我有一个类似的问题:我将expect()调用放在回调中,它总是通过。我确实希望(数据)=3;expect(data)==7并且它通过了…除了您的实际问题之外,您还有一个经典的“数据竞赛”:变量t_times
将在与expect
语句不同的线程上访问(修改)expect
将(大概)访问主线程上的变量,而您的完成处理程序将在其他任意非主线程上运行。不幸的是,expect
并不能神奇地解决这个问题。您需要确保语句t_items=data as?NSMutableArray
将设置在同一个线程上,expect
读取此变量标签,这是主线程。我有一个类似的问题:我将expect()调用放在回调中,它总是通过。我确实希望(数据)=3;expect(data)==7并且它通过。。。