【问题标题】:XCTest: Passing a function parameterXCTest:传递函数参数
【发布时间】:2015-10-22 06:24:03
【问题描述】:

从 XCTest 文件中,我正在调用 Web 服务调用,并使用“self.waitForExpectationsWithTimeout”API 放置了一个等待块并获取服务响应。

我有几个测试方法可以用这个服务响应来执行。当我将此响应存储在全局变量中并从其他测试函数访问它时,该变量将为零。这里需要做什么?我可以将它作为函数参数传递吗?

let serviceResp :NSDictionary!

func test_One() {
        //let expectation: XCTestExpectation = self.expectationWithDescription("HTTP")

        datamanager.fetchData() //Web service

        self.waitForExpectationsWithTimeout(5, handler: { (error: NSError!) -> Void in

//In 5 seconds, I will get response from service and will be stored in datamanager.response. 

    self.serviceResp = datamanager.response
        })
    }


    func test_Two() {
       //self.serviceResp is coming as nil even after assigning a value to it. 
    }

谢谢

【问题讨论】:

  • 让我们看一些代码! :)
  • 添加了高级代码。
  • 你在五秒内得到响应,但其他测试函数在此之前运行很长时间!
  • 马特不是这样的。 test_two 将仅在 5 秒后执行
  • 好吧,也许dataManager.response nil。您达到 5 秒超时的事实表明您的连接可能失败。

标签: ios swift unit-testing xctest xctestexpectation


【解决方案1】:

您不能以这种方式在 XCTest 方法之间传递信息。请参阅Testing with Xcode Docs 中的以下内容(强调我的)

对于每个类,测试从运行类设置方法开始。 为 每个测试方法,都会分配一个新的类实例和它的 实例设置方法执行。之后它运行测试方法, 之后是实例拆卸方法。这个序列重复 类中的所有测试方法。上次测试方法拆解后 在类已经运行时,Xcode 执行类的拆解方法 并继续下一节课。这个序列重复,直到所有 所有测试类中的测试方法都已运行。

如果有所有测试都需要运行的信息,请考虑将其放入 setup 方法中。

【讨论】:

    猜你喜欢
    • 2015-06-08
    • 2013-01-27
    • 2021-04-13
    • 2014-01-24
    • 2013-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多