FataMorgana
FataMorgana使用Mirage库生成模拟。
它使用Sourcery作为代码生成器并提供了自己的模板。
特性
使用FataMorgana可以生成类和协议模拟。需要Sourcery 0.18.0和Mirage 2.0+。
安装
- 安装Sourcery。(我使用的是homebrew版本)
- 下载Mirage和模板
- 创建sourcery.yml
- 为模拟生成添加构建阶段
Carthage
将这些行添加到您的Cartfile中,运行carthage update --platform iOS
并将二进制文件链接到目标,就像您通常所做的那样)
github "valnoc/Mirage" ~> 2.0
github "valnoc/FataMorgana" ~> 2.0
所需的Mock.stencil位于模板文件夹中
Cocoapods
将此行添加到您的Podfile中的测试目标下,并运行pod update
pod 'FataMorgana' ~> 2.0
Podfile示例
target 'MainTarget' do
...
target 'TestTarget' do
inherit! :search_paths
pod 'FataMorgana'
end
end
源文件
将/FataMoragana/Template文件夹复制到您的项目目录。将Mirage源文件复制到您的项目目录。
使用(简短信息)
- 设置.sourcery.yml
- 向测试目标添加构建阶段脚本
- 标记要模拟的对象
- 添加Any.swift文件
类/协议的注解
mirageMock - 生成模拟
miragePartialMock - 生成部分模拟
方法的注解
mirageSel - 设置别名。 mirageSel=myBestFunction
mirageSkip - 在生成类模拟时跳过此方法
mirageReturn - 返回函数的名称。 mirageReturn=anyString()
使用(完整信息)
1. 设置 .sourcery.yml
sources:
- ./../Example
templates:
- ./../Template/
output:
./../Example/ExampleTests/mocks/generated
args:
imports:
- framework: Example
testable: true
- Foundation
returnOptionalAsNil: false
- source
列举源文件夹
- 模板
设置模板文件夹 (Pods/FataMorgana)
- 输出
设置生成文件的输出文件夹。每个模拟都生成到单独的文件中。
- 参数
导入 - 列举模块的额外导入。如果此模块需要 @testable 前缀,则使用 testable: true returnOptionalAsNil - 如果返回类型为可选,则返回 nil
2. 将构建阶段脚本添加到 Tests 目标
sourcery --config "${SRCROOT}"
如果需要,您可以用不同的配置多次调用 sourcery。
3. 标记待模拟的对象
在对象前添加注释 mirageMock 以生成其 (类或协议) 的模拟。
//sourcery: mirageMock
protocol SecondService {
}
在对象前添加注释 miragePartial 以生成其模拟。
//sourcery: miragePartial
class FirstService {
}
4. 添加 Any.swift 文件
所有方法调用 any
特殊情况
相同方法名
使用注解 mirageSel
func foo3(number: NSNumber, closure: @escaping Closure1)
func foo3(string: String, closure: @escaping Closure1)
这些方法将为 Mirage 生成相同字符串选择器。在这种情况下,您可以使用注解为方法提供备用名称
func foo3(number: NSNumber, closure: @escaping Closure1)
//sourcery: mirageSel=foo3str
func foo3(string: String, closure: @escaping Closure1)
跳过方法
使用注解 mirageSkip
如果不想在模拟中出现,请用此注解标记方法。
//sourcery: mirageSkip
func skipMe() {
}
许可
FataMorgana 在 MIT 许可下提供。