當前位置:編程學習大全網 - 編程語言 - 如何在 ReactiveCocoa 中寫單元測試

如何在 ReactiveCocoa 中寫單元測試

如何在 ReactiveCocoa 中寫單元測試

現在很多人在開發 iOS 時都使用ReactiveCocoa,它是壹個函數式和響應式編程的框架,使用 Signal 來代替 KVO、Notification、Delegate 和 Target-Action 等傳遞消息和解決對象之間狀態與狀態的依賴過多問題。但很多時候使用它之後,如何編寫單元測試來驗證程序是否正確呢?下面首先了解 MVVM 架構,然後通過壹個例子來講述我如何在 RAC ( ReactiveCocoa 簡稱 ) 中使用Kiwi來編寫單元測試。

在 MVVM 架構中,通常都將 view 和 view controller 看做壹個整體。相對於之前 MVC 架構中 view controller 執行很多在 view 和 model 之間數據映射和交互的工作,現在將它交給 view model 去做。

至於選擇哪種機制來更新 view model 或 view 是沒有強制的,但通常我們都選擇ReactiveCocoa。ReactiveCocoa 會監聽 model 的改變然後將這些改變映射到 view model 的屬性中,並且可以執行壹些業務邏輯。

舉個例子來說,有壹個 model 包含壹個 dateAdded 的屬性,我想監聽它的變化然後更新 view model 的 dateAdded 屬性。但 model 的 dateAdded 屬性的數據類型是 NSDate,而 view model 的數據類型是 NSString,所以在 view model 的 init 方法中進行數據綁定,但需要數據類型轉換。示例代碼如下:

RAC ( self,dateAdded ) = [ RACObserve ( self.model,dateAdded ) map:^ ( NSDate*date ) { return [ [ ViewModel dateFormatter ] stringFromDate:date ] ;} ] ;

ViewModel 調用 dateFormatter 進行數據轉換,且方法 dateFormatter 可以復用到其他地方。然後 view controller 監聽 view model 的 dateAdded 屬性且綁定到 label 的 text 屬性。

RAC ( self.label,text ) = RACObserve ( self.viewModel,dateAdded ) ;

現在我們抽象出日期轉換到字符串的邏輯到 view model,使得代碼可以測試和復用,並且幫 view controller瘦身。

  • 上一篇:高考後該怎樣選報專業?
  • 下一篇:學機電壹體化有什麽用?
  • copyright 2024編程學習大全網