配置

菜单

消费者与提供者配置选项

仅适用于消费者的配置选项

仅适用于提供者的配置选项

消费者与提供者

log_dir(日志目录)

  1. Pact.configure do | config |
  2. config.log_dir = './log'
  3. end

默认值为: ./log

logger(日志记录器)

  1. Pact.configure do | config |
  2. config.logger = Logger.new
  3. end

默认值为:配置了log_dir为目录的日志文件记录器。

logger.level(日志等级)

  1. Pact.configure do | config |
  2. config.logger.level = Logger::INFO
  3. end

默认值为: Logger::DEBUG

diff_formatter(差异展示格式)

  1. Pact.configure do | config |
  2. config.diff_formatter = :list
  3. end

默认值为: :list

可选项有::unix, :list, :embedded, Custom Diff Formatter

:unix

配置 - 图1

:list

配置 - 图2

:embedded

配置 - 图3

定制差异展示格式

使用可接受diff作为参数,并提供call方法调用作为响应的任何对象。

  1. class MyCustomDiffFormatter
  2. def self.call diff
  3. ### Do stuff here
  4. end
  5. end
  6. Pact.configure do | config |
  7. config.diff_formatter = MyCustomDiffFormatter
  8. end

消费者

pact_dir(契约目录)

  1. Pact.configure do | config |
  2. config.pact_dir = `./spec/pacts`
  3. end

默认值为: ./spec/pacts

doc_generator(文档生成器)

  1. Pact.configure do | config |
  2. config.doc_generator = :markdown
  3. end

默认值为: none

可选项有: :markdown, Custom Doc Generator

:markdown

基于消费者创建的契约文件的内容生成Markdown文档。文档文件生成在:${Pact.configuration.doc_dir}/markdown路径。

自定义文档生成器

使用能够响应call方法的任何对象,这些对象需要接受pact_dirdoc_dir作为参数。

  1. Pact.configure do | config |
  2. config.doc_generator = lambda{ | pact_dir, doc_dir | generate_some_docs(pact_dir, doc_dir) }
  3. end

doc_dir(文档目录)

  1. Pact.configure do | config |
  2. config.doc_dir = './doc'
  3. 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

  1. Pact.configure do | config |
  2. config.include MyTestHelperMethods
  3. end

要想在提供者状态的set_up和tear_down代码块中使用某些模块,就需要在配置中将其包含进来,如下所示。这样做的一个常见用途是将用于设置数据的工厂方法包含进来,以使提供者状态文件不会过于臃肿。