pact_consumer_ex
pact_consumer_ex is an Elixir library that provides Native Implemented Function (NIF) bindings to the pact_consumer Rust library. It leverages Rustler to expose the Rust functions while maintaining the same look and feel as the original library.
Installation
Add to your mix.exs dependencies:
def deps do
[
{:pact_consumer_ex, "~> 0.3.0", only: [:test]}
]
endThen run:
mix deps.getUsage
For example usage of the library, refer to the test/pact_builder_test.exs file, which contains practical examples demonstrating how to utilize the exposed NIF functions.
Configuration
This library uses the same environment variables as the Rust pact_consumer library (Pact test DSL for writing consumer pact tests in Rust - Pact Docs):
Changing the output directory:
By default, the pact files will be written totarget/pacts. To change this, set the environment variablePACT_OUTPUT_DIR.Forcing pact files to be overwritten:
Pacts are merged with existing pact files when written. To change this behaviour so that the files are always overwritten, set the environment variablePACT_OVERWRITEtotrue.
Pact Plugins
To use a plugin, install it with the pact-plugin-cli. By default, plugins are installed under ~/.pact/plugins/. You can change this location by setting the PACT_PLUGIN_DIR environment variable.
See an example plugin usage in test/pact_builder_test.exs.
For more information about plugins, refer to the Pact plugin quick start guide.
Current Status
Currently, pact_consumer_ex supports:
- Synchronous HTTP interactions.
- Asynchronous message interactions.
- Integration with Pact plugins.
Planned future enhancements include:
- Support for synchronous message interactions.
Contributing
Contributions are welcome! Please open issues or submit pull requests for any enhancements or bug fixes.
License
This project is licensed under the MIT License. See the LICENSE file for details.