如何将解析后的GherkinDocument保存为Cucumber Feature文件(Ruby)
如何将GherkinDocument转换回纯文本Feature文件
当然可以!其实你正在使用的gherkin gem本身就自带了这个转换能力,完全不需要额外安装其他包。下面是具体的实现思路和代码示例:
核心思路
gherkin gem提供了Formatter模块,其中的PrettyFormatter可以将解析后的GherkinDocument对象重新格式化为标准的feature文件文本。我们只需要把Formatter的输出定向到一个字符串IO,就能获取到可保存的纯文本内容。
代码示例
假设你已经通过解析得到了GherkinDocument对象,直接用这段代码就能完成转换和保存:
require 'gherkin/parser' require 'gherkin/formatter/pretty_formatter' require 'stringio' # 1. (如果还没解析)先读取并解析原feature文件 parser = Gherkin::Parser.new gherkin_document = parser.parse(File.read('original_feature.feature')) # 2. 创建字符串IO来接收格式化后的输出 output_buffer = StringIO.new # 3. 初始化PrettyFormatter,使用默认英文本地化配置 i18n = Gherkin::I18n.new('en') formatter = Gherkin::Formatter::PrettyFormatter.new(output_buffer, i18n) # 4. 让Formatter处理GherkinDocument,生成feature文本 formatter.gherkin_document(gherkin_document) # 5. 获取生成的纯文本内容 generated_feature_text = output_buffer.string # 6. 保存到新的feature文件 File.write('modified_feature.feature', generated_feature_text)
注意事项
- 如果你的解析结果是哈希而不是
GherkinDocument对象,可能是使用了较旧版本的gherkin gem,建议升级到最新稳定版,新版本的parser.parse方法会直接返回GherkinDocument实例。 - 如果你需要自定义输出格式(比如调整缩进、添加自定义注释等),可以自己实现
Gherkin::Formatter::Formatter接口,不过PrettyFormatter已经能生成符合标准的feature文件格式,足够满足大部分需求。
内容的提问来源于stack exchange,提问作者Cristian
相关产品推荐
相关产品推荐

