TDD day
在上一篇笔记,您了解了测试驱动的开发可以归结为一个简单的过程,称为TDD Cycle。它有四个步骤,通常被“color coded”,如下所示:
我们称它为“Red-Green-Refactor Cycle”
图片来源
不断的循环。
延续上一个逻辑。当帐号正确时,输入匡下方的题型字串应该要隐藏。
当然我们要 conform TDD Cycle,我们继续吧~
func testLoginPageViewController_usernameValidUILabel_isHidden(){
//given
//when
//then
}
在什麽特定条件下
func testLoginPageViewController_usernameValidUILabel_isHidden(){
//given
let state:LoginState = .userNameCorrect
//when
//then
}
谁在这个条件下
func testLoginPageViewController_usernameValidUILabel_isHidden(){
//given
let state:LoginState = .userNameCorrect
//when
sut.loginState = state
//then
}
预期要发生的结果
func testLoginPageViewController_usernameValidUILabel_isHidden(){
//given
let state:LoginState = .userNameCorrect
//when
sut.loginState = state
//then
let isHidden = sut.loginPageView.usernameValidUILabel.isHidden
XCTAssertEqual(isHidden, true)
}
这是我写的第三个 TDD Cycle,建构这个 Cycle所花的时间不到三分钟,可以说明当习惯了制作Test,制作Test并不会花费太多的时间。
Command + U 测试看看吧
很好,已经顺利地做出一个 failing test。
我在 LoginViewController 代理了 LoginView,并在状态改变时更改LoginView的配置。
Command + U 测试看看吧
顺利地 pass 这个 test。
已经可以开始 Refactor。
这两段程序码有很明显的耦合,尝试把它拆开。
func changepasswordValidUILabelIsHidden(loginState:LoginState) {
if loginState == .bothCorrect || loginState == .userNameCorrect {
loginPageView.usernameValidUILabel.isHidden = true
}else{
loginPageView.usernameValidUILabel.isHidden = false
}
}
func changeUsernameValidUILabelIsHidden(loginState:LoginState) {
if loginState == .bothCorrect || loginState == .passwordCorrect {
loginPageView.passwordValidUILabel.isHidden = true
}else{
loginPageView.passwordValidUILabel.isHidden = false
}
}
Command + u
仍然pass 代表这次的 Refactor没有问题。
这次完成 Cycle的速度快很多,只要熟练,TDD Cycle 不会造成太大的时间负担。
下一篇还会继续分享,下一个 TDD Cycle
<<: 参考监视器的非必需属性-高凝聚力(High cohesion)
>>: HP D2600 Storage AUC正常但第一颗硬碟亮灯
STM32CubeIDE安装 首先可以到官网下载对应系统的安装档 STM32官网 选择对应系统下载後...
根据ISO 31000,风险是“不确定性对目标的影响(effect of uncertainty o...
昨天我们学完了函式的基础用法以及讲解,今天要写的是进阶用法。 会这样分两天是因为我觉得有一点难,可以...
Jest-Dom 以及接下来的主角React-Testing-Library 在做测试时,我们需要针...
Blue Prism(蓝色棱镜),(後续也会穿插着简称BP)是属於RPA Robotic Proce...