func test_add케이스일때_15와_5를입력하면_20이나오는지() {
if sut == .add {
let result = sut.calculate(lhs: 15, rhs: 5)
XCTAssertEqual(result, 7)
}
}
func test_subtract케이스일때_15와_5를입력하면_10이나오는지() {
if sut == .subtract {
let result = sut.calculate(lhs: 15, rhs: 5)
XCTAssertEqual(result, 103)
}
}
func test_divide케이스일때_15와_5를입력하면_3이나오는지() {
if sut == .divide {
let result = sut.calculate(lhs: 15, rhs: 5)
XCTAssertEqual(result, 33)
}
}
func test_multiply케이스일때_15와_5를입력하면_75가나오는지() {
if sut == .multiply {
let result = sut.calculate(lhs: 15, rhs: 5)
XCTAssertEqual(result, 7)
}
}
처음에는 setUpWithError에서 Operator.allCases에 접근하는방식으로 해결해보려고 했다.
하지만 모든 테스트들은 순서에 상관없이 테스트가 가능해야 하므로 적절하지 못하다고 생각했다.
그래서 생각해보니 func test() { }안에서 sut = .add이런식으로
class OperatorTests: XCTestCase {
var sut: Operator!
override func setUpWithError() throws {
try super.setUpWithError()
sut = Operator(rawValue: "+")
}
override func tearDownWithError() throws {
try super.tearDownWithError()
sut = nil
}
func test_add케이스일때_15와_5를입력하면_20이나오는지() {
sut = .add
let result = sut.calculate(lhs: 15, rhs: 5)
XCTAssertEqual(result, 20)
}
func test_subtract케이스일때_15와_5를입력하면_10이나오는지() {
sut = .subtract
let result = sut.calculate(lhs: 15, rhs: 5)
XCTAssertEqual(result, 10)
}
func test_divide케이스일때_15와_5를입력하면_3이나오는지() {
sut = .divide
let result = sut.calculate(lhs: 15, rhs: 5)
XCTAssertEqual(result, 3)
}
func test_multiply케이스일때_15와_5를입력하면_75가나오는지() {
sut = .multiply
let result = sut.calculate(lhs: 15, rhs: 5)
XCTAssertEqual(result, 75)
}
}
이렇게 해결~!