OCMockitoSwift 0.7.0

OCMockitoSwift 0.7.0

Alek Zubala 维护。



 
依赖
OCMockito~> 6.0.0
OCHamcrest~> 8.0
 

  • 作者
  • Aleksander Zubala

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 文件。