示例
基本用法
RxBDD.init(inputObservable: #INPUT_OBSERVABLETYPE, // Relay or Subject
outputType: #EXPECTED_OUTPUT_TYPE)
.given(#INPUT_EVENTS) // [Recorded<Event<#INPUT_OBSERVABLETYPE_ELEMENT>>]
.when(#OUTPUT_OBSERVABLE) // Observable<#EXPECTED_OUTPUT_TYPE>
.then({ outputs in
XCTAssertEqual(outputs,
#EXPECTED_EVENTS) // [Recorded<Event<#EXPECTED_OUTPUT_TYPE>>]
})
共享给定的事件
let shared = RxBDD.init(inputObservable: #INPUT_OBSERVABLETYPE, // Relay or Subject
outputType: #EXPECTED_OUTPUT_TYPE)
.given(#INPUT_EVENTS) // [Recorded<Event<#INPUT_OBSERVABLETYPE_ELEMENT>>]
.share()
shared.when(#OUTPUT_OBSERVABLE) // Observable<#EXPECTED_OUTPUT_TYPE>
.then({ outputs in
XCTAssertEqual(outputs,
#EXPECTED_EVENTS) // [Recorded<Event<#EXPECTED_OUTPUT_TYPE>>]
})
shared.when(#OUTPUT_OBSERVABLE) // Observable<#EXPECTED_OUTPUT_TYPE>
.then({ outputs in
XCTAssertEqual(outputs,
#EXPECTED_EVENTS) // [Recorded<Event<#EXPECTED_OUTPUT_TYPE>>]
})
描述
func testMultiplyWithRxBDD() {
let integerInput = PublishSubject<Int>.init()
let multiplyOutput: Observable<Int> = input.map({ $0 * $0 }).asObservable()
let test = RxBDD.init(inputObservable: integerInput,
outputType: Int.self)
// Given: I have 10, 20, 30 Integer input events
test.given([.next(100, 10),
.next(200, 20),
.next(300, 30)])
// When: It should multiply input integer events
test.when(output)
// Then: It should have multiplied integer events
test.then({ outputs in
XCTAssertEqual(outputs,
[.next(100, 100),
.next(200, 400),
.next(300, 900)])
})
}
要求
- Xcode, ~> 10.x
- Swift, 4.2 // 5.0 即将推出!
- RxSwift, ~> 4.0
- RxCocoa, ~> 4.0
- RxTest, ~> 4.0
安装
RxBDD 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 之中
target 'YOUR_PROJECT_Example' do
target 'YOUR_PROJECT_Tests' do
pod 'RxBDD'
end
end
作者
Geektree0101, [email protected]
许可
RxBDD 在 MIT 许可下可用。有关更多信息,请参阅 LICENSE 文件。