0966仕様書無しさん
2018/07/07(土) 10:07:05.45> わざわざその時間になるまで待って動かしますか?
>
> それはさすがにありえないので、
> 任意の値を返せるTimeProviderのモックアップを作ってテストします。
一方俺は、コンストラクタで任意の時間を指定できるようにした
コードは短くなり、インターフェースなど不要になった
class GreetingViewModel {
var now: Int
init(now: Int) {
self.now = now
}
func greet() -> String {
switch self.now() {
case (let hour) where (6 <= hour && hour <= 11):
return "Good Morning"
case (let hour) where (12 <= hour && hour <= 17):
return "Good Afernoon"
case (let hour) where (18 <= hour && hour <= 23) || (0 <= hour && hour <= 5):
return "Good Evening"
default:
return "Hello"
}
}
}
var viewModel = GreetingViewModel(now: Calendar.current.component(.hour, from: Date()))
print(viewModel.greet())