OCMockitoSwift
免责声明
这个库仍在开发中,仅从OCMockito提供最基本的功能。
关于
OCMockito为Swift编写的适配器,允许以NSObject
的子类创建和操作 mocks。
适配器包括两个文件
OCMockitoSwiftAdapter.{h,m}
-- 提供用于模拟、验证和存根的Swift友好接口的Objective-C代码OCMockito.swift
-- 一组全局函数,例如mock()
或verify()
安装
Cocoapods
只需将以下内容添加到您的 Podfile
中
pod 'OCMockitoSwift', '~> 0.3'
Carthage
只需将以下内容添加到您的 Cartfile
中
github "azubala/OCMockitoSwift"
示例
创建模拟
要创建一个 NSObject
子类的模拟,只需调用
let mock = mock(MyObject.self) // no casting needed
要创建一个扩展 NSObject
协议的 Objective-C 协议的模拟,执行以下操作
let mock = mockProtocol(MyProtocol.self) as? MyProtocol // casting required :(
验证行为
要验证是否与模拟有交互,请使用全局函数 verify
verify(mock) { #selector(MyObject.doSomethingNoArguments) } // method without arguments
verify(mock) { (#selector(MyObject.doSomething(with:)), arguments: ["Foo"]) } // method with arguments
要验证模拟交互的计数,只需使用 count
参数(默认值设置为 1)。例如,要验证是否有与模拟的交互,可以简单地调用
verify(testMock, count: 0) { #selector(TestClass.doSomethingNoArguments) }
与 OCHamcrest 匹配器一起工作
// provide map of matchers for each argument index; `whatever()` is equivalent of `anything()`
verify(testMock) { (#selector(TestClass.doSomething(with:)), matchers: [0: whatever()]) }
// Capturing arguments
var captor = HCArgumentCaptor()
verify(testMock) { (#selector(TestClass.doSomething(with:)), matchers: [0: captor]) }
var capturedValue = captor.value as! String
expect(capturedValue).to(equal("Bar"))
存根模拟
要为模拟中的特定方法存根返回值,请使用全局函数 given
given(mock) { (#selector(MyObject.returnObjectMethodNoArguments), willReturn: "Fake Value")} // method without arguments
given(mock) { (#selector(MyObject.returnSomething(with:)), arguments: ["Foo"], willReturn: "Fake Value")} // method with arguments
要使用闭包存根,请使用 willDo:
参数
given(testMock) { (#selector(MyObject.returnIntegerMethodNoArguments), willDo: { _ in
return 42
})}
作者
Aleksander Zubala | zubala.com
许可协议
OCMockitoSwift 采用 MIT 许可协议。更多信息请参阅 LICENSE 文件。