我正在尝试编写一种方法,其中数据对象(Realm)使用Alamofire刷新其属性。但是我不知道如何对它进行单元测试。
import Alamofire
import RealmSwift
import SwiftyJSON
class Thingy: Object {
// some properties
dynamic var property
// refresh instance
func refreshThingy() {
Alamofire.request(.GET, URL)
.responseJSON {
response in
self.property = response["JSON"].string
}
}
}
在我的单元测试中,我想测试Thingy
可以从服务器正确刷新。
import Alamofire
import SwiftyJSON
import XCTest
@testable import MyModule
class Thingy_Tests: XCTestCase {
func testRefreshThingy() {
let testThingy: Thingy = Thingy.init()
testThingy.refreshProject()
XCTAssertEqual(testThingy.property, expected property)
}
我该如何正确设置单元测试?
使用XCTestExpectation
等待异步过程,例如:
func testExample() {
let e = expectation(description: "Alamofire")
Alamofire.request(urlString)
.response { response in
XCTAssertNil(response.error, "Whoops, error \(response.error!.localizedDescription)")
XCTAssertNotNil(response, "No response")
XCTAssertEqual(response.response?.statusCode ?? 0, 200, "Status code not 200")
e.fulfill()
}
waitForExpectations(timeout: 5.0, handler: nil)
}
对于您的情况,如果要测试异步方法,则必须提供一个完成处理程序以refreshThingy
:
class Thingy {
var property: String!
func refreshThingy(completionHandler: ((String?) -> Void)?) {
Alamofire.request(someURL)
.responseJSON { response in
if let json = response.result.value as? [String: String] {
completionHandler?(json["JSON"])
} else {
completionHandler?(nil)
}
}
}
}
然后您可以测试Thingy
:
func testThingy() {
let e = expectation(description: "Thingy")
let thingy = Thingy()
thingy.refreshThingy { string in
XCTAssertNotNil(string, "Expected non-nil string")
e.fulfill()
}
waitForExpectations(timeout: 5.0, handler: nil)
}
坦白说,refreshThingy
无论如何,使用完成处理程序的这种方式可能都是您想要的,但是如果您不想提供完成处理程序,我将其设为可选。
问题内容: 我有一个表示形式类,它存储一个XYChart.Series对象,并通过观察模型对其进行更新。通过使用Platform.runLater(…)完成系列更新 我要对此进行单元测试,确保runLater中的命令正确执行。如何告诉单元测试等待runLater命令完成?现在我要做的就是在测试线程上使用Thread.Sleep(…),给FXApplicationThread时间来完成,但这听起来很
我有一个方法如下所示: 我试图这样进行单元测试: 在完成模拟的LookUpIdAsync之前,将调用我的断言。在我的普通代码中,这正是我想要的。但是对于我的单元测试,我不希望这样。 我正在使用BackgroundWorker转换为Async/Await。对于后台工作人员,这项功能正常运行,因为我可以等待后台工作人员完成。 但是似乎没有办法等待异步无效方法... 如何对该方法进行单元测试?
我目前正在与CDI Unit合作一个项目,我遇到了一个奇怪的问题。我试图在一个简单的项目中重现它: 我有一个使用CdiRunner运行的测试类(如下所述:http://jglue.org/cdi-unit-user-guide/我的测试类注入了被测试的单元:UUD。这个类扩展了一个超级类“ParentTestClass”,它目前是无用的。 测试课。爪哇: 正如我提到的,父类是空的。 ParentT
Android Studio 1.1 添加了单元测试支持,详细请看 Unit testing support。本章的其余部分描述的是 “instrumentation tests”。利用 Instrumentation 测试框架可以构建独立的测试 APK 并运行在真实设备(或模拟器)中进行测试。
英文原文:http://emberjs.com/guides/testing/unit/ 单元测试用于测试代码的一个小片段,确保其功能正常。与集成测试不同,单元测试被限定在一个范围内,并且不需要Ember应用运行。 全局 vs 模块 过去如果没有作为一个全局变量加载整个Ember应用,要对应用进行测试非常困难。通过使用模块(CommonJS,AMD等)来编写应用,可以只加载被测试的部分,而不用将其
单元测试涉及测试软件应用程序的每个单元或单个组件。这是第一级软件测试。单元测试的目的是验证单元组件的性能。 单元是软件系统的单个可测试部分,并在应用程序软件的开发阶段进行测试。 此测试旨在测试隔离代码的正确性。单元组件是应用程序的单独功能或代码。白盒测试方法用于单元测试,通常由开发人员完成。 在测试级别层次结构中,单元测试是在集成和其他剩余测试级别之前完成的第一级测试。它使用模块进行测试,减少了等