Use MockServer::builder
to get started.
Each instance of MockServer
is, by default, running on a random
port available on your local machine.
With MockServerBuilder::listener
you can choose to start the MockServer
instance on a specific port you have already bound.
use wiremock::MockServer;
#[async_std::main]
async fn main() {
// Arrange
let listener = std::net::TcpListener::bind("127.0.0.1:0").unwrap();
let expected_server_address = listener
.local_addr()
.expect("Failed to get server address.");
// Act
let mock_server = MockServer::builder().listener(listener).start().await;
// Assert
assert_eq!(&expected_server_address, mock_server.address());
}
By default, MockServer
will record all incoming requests to display
more meaningful error messages when your expectations are not verified.
This can sometimes be undesirable (e.g. a long-lived server serving
high volumes of traffic) - you can disable request recording using
MockServerBuilder::disable_request_recording
.
use wiremock::MockServer;
#[async_std::main]
async fn main() {
// Arrange
let mock_server = MockServer::builder().disable_request_recording().start().await;
// Act
let received_requests = mock_server.received_requests().await;
// Assert
assert!(received_requests.is_none());
}
The mock server prints the requests it received when one or more mocks have expectations that have not been satisfied. By default, the size of the printed body is limited.
You may want to change this if you’re working with services with very large
bodies, or when printing wiremock output to a file where size matters
less than in a terminal window. You can configure this limit with
MockServerBuilder::body_print_limit
.
Finalise the builder and launch the MockServer
instance!