- 配置
- 菜单
- 消费者与提供者配置选项
- 仅适用于消费者的配置选项
- 仅适用于提供者的配置选项
- 菜单
- 消费者与提供者
- log_dir(日志目录)
- logger(日志记录器)
- logger.level(日志等级)
- diff_formatter(差异展示格式)
- :unix
- :list
- :embedded
- 定制差异展示格式
- 消费者
- pact_dir(契约目录)
- doc_generator(文档生成器)
- :markdown
- 自定义文档生成器
- doc_dir(文档目录)
- pactfile_write_mode(契约文件写入模式)
- 提供者
- include
- include
配置
菜单
消费者与提供者配置选项
- diffformatter
- logdir
- logger
- logger.level
仅适用于消费者的配置选项
- pactdir
- docdir
- docgenerator
- pactfilewritemode
仅适用于提供者的配置选项
- include
消费者与提供者
log_dir(日志目录)
Pact.configure do | config |config.log_dir = './log'end
默认值为: ./log
logger(日志记录器)
Pact.configure do | config |config.logger = Logger.newend
默认值为:配置了log_dir为目录的日志文件记录器。
logger.level(日志等级)
Pact.configure do | config |config.logger.level = Logger::INFOend
默认值为: Logger::DEBUG
diff_formatter(差异展示格式)
Pact.configure do | config |config.diff_formatter = :listend
默认值为: :list
可选项有::unix, :list, :embedded, Custom Diff Formatter
:unix

:list

:embedded

定制差异展示格式
使用可接受diff作为参数,并提供call方法调用作为响应的任何对象。
class MyCustomDiffFormatterdef self.call diff### Do stuff hereendendPact.configure do | config |config.diff_formatter = MyCustomDiffFormatterend
消费者
pact_dir(契约目录)
Pact.configure do | config |config.pact_dir = `./spec/pacts`end
默认值为: ./spec/pacts
doc_generator(文档生成器)
Pact.configure do | config |config.doc_generator = :markdownend
默认值为: none
可选项有: :markdown, Custom Doc Generator
:markdown
基于消费者创建的契约文件的内容生成Markdown文档。文档文件生成在:${Pact.configuration.doc_dir}/markdown路径。
自定义文档生成器
使用能够响应call方法的任何对象,这些对象需要接受pact_dir和doc_dir作为参数。
Pact.configure do | config |config.doc_generator = lambda{ | pact_dir, doc_dir | generate_some_docs(pact_dir, doc_dir) }end
doc_dir(文档目录)
Pact.configure do | config |config.doc_dir = './doc'end
默认值为: ./doc
pactfile_write_mode(契约文件写入模式)
默认值为: :overwrite
可选项有: :overwrite, :update, :smart, :none
默认情况下,当使用pacts运行任何测试用例时,契约文件每次都会被彻底覆盖(从头开始)。这意味着如果某些交互没有在最近一次rspec运行时被执行的话,实际上会被从契约文件里删除掉。如果你有运行时间很长的pact用例(比如,通过Capybara使用浏览器生成的)而且正在并行开发消费者与提供者,或者试着修复挂掉的测试,一次运行所有的测试将会是很繁重的。这种场景下,你可以将pactfile_write_mode值设置为:update。这时将会保留所有已存在的交互,而且只更新那些发生变化了的交互,以描述和提供者状态字段来识别。这样做不好的一面是如果这些字段任何一个发生了变化,那么旧有的交互将不会被从契约文件中移除。作为一个两全之策,你可以将pactfile_write_mode值设置为:smart。这样当运行rake(系统通过使用’ps’命令调用来进行判断)的时候将会使用:overwrite模式,而运行单个用例的时候将会使用:update模式。该值设置为:none时将不会生成任何契约文件(在pact-mock_service版本大于等于0.8.1时)。
提供者
Pact使用RSpec和Rack::Test在契约文件基础上生成动态用例。如果没有合适的Pact配置特性的话,RSpec相关配置也可用于修改测试行为。如果你希望使用和单元测试一样的spec_helper.rb文件,就在pact_helper.rb中引入它,但是要注意,你为单元测试配置的RSpec选项有可能是你的pact验证测试中所需要的,但也有可能不是。
include
Pact.configure do | config |config.include MyTestHelperMethodsend
要想在提供者状态的set_up和tear_down代码块中使用某些模块,就需要在配置中将其包含进来,如下所示。这样做的一个常见用途是将用于设置数据的工厂方法包含进来,以使提供者状态文件不会过于臃肿。
