SwiftとQuickを使って、ボタンを押すとラベルの表示が変わるUIテストをしたい
Quickを使ってテストがうまくいきません。どうしてでしょうか?
ボタンを押すとラベルに「Hello」と表示する機能をテストしたいのです。
作業環境
- Mac OS X 10.10
- Xcode 6.3.2 (Swift 1.2)
StoryBoard
上のラベルオブジェクト「????」がmyLabel
です。
下のボタンオブジェクト「Button」がmyButton
です。
テスト対象のViewController
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var myLabel: UILabel!
@IBOutlet weak var myButton: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func pushButton(sender: AnyObject) {
self.myLabel.text = "Hello"
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
テストの内容
import UIKit
import Quick
import Nimble
import TestApp
class ViewControllerSpec: QuickSpec {
override func spec() {
var vc : ViewController!
beforeEach{
vc = ViewController()
}
describe("ボタンを押す") {
beforeEach{
vc.beginAppearanceTransition(true, animated: false)
vc.endAppearanceTransition()
}
it("myLabelのtextが変わる") {
vc.myButton?.sendActionsForControlEvents(UIControlEvents.TouchUpInside)
expect(vc.myLabel?.text).to(equal("Hello"))
}
}
}
}
テスト結果
failed - expected to equal , got (user beNil() to match nils)
vc.beginAppearanceTransition(true, animated: false)
と vc.endAppearanceTransition()
によって、viewDidAppear
されているので、vc.myLabel
にはnil
が含まれないという認識なんですが、どうしてgot <nil>
と返ってくるのかわかりません。
教えてください。よろしくお願いします。