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.
Add to your mix.exs
dependencies:
def deps do
[
{:pact_consumer_ex, "~> 0.2.0", only: [:test]}
]
end
Then run:
mix deps.get
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.
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_OVERWRITE
totrue
.
Currently, pact_consumer_ex
supports:
- Synchronous HTTP interactions.
- Asynchronous message interactions.
Planned future enhancements include:
- Support for synchronous message interactions.
- Integration with Pact plugins.
Contributions are welcome! Please open issues or submit pull requests for any enhancements or bug fixes.
This project is licensed under the MIT License. See the LICENSE file for details.