自作アプリのテストコードを書きたいと思っています。
下記のようなFireStoreのデータを編集し、画面遷移をするコードのテストを下記場合は、どのように書くのが通例でしょうか?
一つの関数につき一つのテストという認識でしたが、これは一つの関数にデータの編集と画面遷移という二つのロジックが書かれているため、画面遷移の方を別の関数にまとめて、それぞれをテストした方がいいのでしょうか?
また、画面遷移のテストコードの書き方はどのように記述すればいいのでしょうか?調べてみましたが、自分では理解することが困難でした。
テストのことを全く考えずにコードを書いてしまったので、テストしやすいコードの書き方という観点からも、こういう書き方にするべきというご意見がありましたら、ご指摘お願いいたします。
swift
1 2import UIKit 3import FirebaseFirestore 4import Firebase 5 6class EditViewController: UIViewController,UITextFieldDelegate { 7 8 let db = Firestore.firestore() 9 var titleString = String() 10 var moneyString = String() 11 var descriptionString = String() 12 var documentIdString = String() 13 14 @IBOutlet weak var editButton: UIButton! 15 @IBOutlet weak var titleTextField: UITextField! 16 @IBOutlet weak var moneyTextField: UITextField! 17 @IBOutlet weak var descriptionTextField: UITextField! 18 override func viewDidLoad() { 19 super.viewDidLoad() 20 titleTextField.text = titleString 21 moneyTextField.text = moneyString 22 descriptionTextField.text = descriptionString 23 moneyTextField.keyboardType = UIKeyboardType.numberPad 24 } 25 26 @IBAction func edit(_ sender: Any) { 27 let title = titleTextField.text 28 let money = moneyTextField.text! 29 let description = descriptionTextField.text 30 let data = ["title":title,"money":money,"description":description] as [String : Any] 31 var ref: DocumentReference? = nil 32 ref = db.collection("patiences").document("(documentIdString)") 33 ref?.updateData(data as [AnyHashable : Any]){ err in 34 if let err = err { 35 print("Error updating document: (err)") 36 } else { 37 print("Document successfully updated") 38 } 39 } 40 let indexVC = self.storyboard?.instantiateViewController(identifier: "index") as! IndexViewController 41 indexVC.modalPresentationStyle = .fullScreen 42 present(indexVC, animated: true, completion: nil) 43 } 44 45 func textFieldShouldReturn(_ textField: UITextField) -> Bool { 46 if titleTextField.text == ""||moneyTextField.text == ""{ 47 editButton.isEnabled = false 48 }else{ 49 editButton.isEnabled = true 50 } 51 titleTextField.resignFirstResponder() 52 moneyTextField.resignFirstResponder() 53 descriptionTextField.resignFirstResponder() 54 return true 55 } 56 57 override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { 58 if titleTextField.text == ""||moneyTextField.text == ""{ 59 editButton.isEnabled = false 60 }else{ 61 62 editButton.isEnabled = true 63 } 64 titleTextField.resignFirstResponder() 65 moneyTextField.resignFirstResponder() 66 descriptionTextField.resignFirstResponder() 67 68
回答1件
あなたの回答
tips
プレビュー