Struct httpmock::MockServer
source · pub struct MockServer { /* private fields */ }
Expand description
A mock server that is able to receive and respond to HTTP requests.
Implementations§
source§impl MockServer
impl MockServer
sourcepub async fn connect_async(address: &str) -> Self
pub async fn connect_async(address: &str) -> Self
Asynchronously connects to a remote mock server that is running in standalone mode using
the provided address of the form remote
to be enabled.
sourcepub fn connect(address: &str) -> Self
pub fn connect(address: &str) -> Self
Synchronously connects to a remote mock server that is running in standalone mode using
the provided address of the form remote
to be enabled.
sourcepub async fn connect_from_env_async() -> Self
pub async fn connect_from_env_async() -> Self
Asynchronously connects to a remote mock server that is running in standalone mode using
connection parameters stored in HTTPMOCK_HOST
and HTTPMOCK_PORT
environment variables.
Note: This method requires the feature remote
to be enabled.
sourcepub fn connect_from_env() -> Self
pub fn connect_from_env() -> Self
Synchronously connects to a remote mock server that is running in standalone mode using
connection parameters stored in HTTPMOCK_HOST
and HTTPMOCK_PORT
environment variables.
Note: This method requires the feature remote
to be enabled.
sourcepub async fn start_async() -> Self
pub async fn start_async() -> Self
Starts a new MockServer
asynchronously.
Attention: This library manages a pool of MockServer
instances in the background.
Instead of always starting a new mock server, a MockServer
instance is only created
on demand if there is no free MockServer
instance in the pool and the pool has not
reached a maximum size yet. Otherwise, THIS METHOD WILL BLOCK the executing function
until a free mock server is available.
This allows to run many tests in parallel, but will prevent exhaust the executing machine by creating too many mock servers.
A MockServer
instance is automatically taken from the pool whenever this method is called.
The instance is put back into the pool automatically when the corresponding
‘MockServer’ variable gets out of scope.
sourcepub fn start() -> MockServer
pub fn start() -> MockServer
Starts a new MockServer
synchronously.
Attention: This library manages a pool of MockServer
instances in the background.
Instead of always starting a new mock server, a MockServer
instance is only created
on demand if there is no free MockServer
instance in the pool and the pool has not
reached a maximum size yet. Otherwise, THIS METHOD WILL BLOCK the executing function
until a free mock server is available.
This allows to run many tests in parallel, but will prevent exhaust the executing machine by creating too many mock servers.
A MockServer
instance is automatically taken from the pool whenever this method is called.
The instance is put back into the pool automatically when the corresponding
‘MockServer’ variable gets out of scope.
sourcepub fn host(&self) -> String
pub fn host(&self) -> String
The hostname of the MockServer
. By default, this is 127.0.0.1
.
In standalone mode, the hostname will be the host where the standalone mock server is
running.
sourcepub fn address(&self) -> &SocketAddr
pub fn address(&self) -> &SocketAddr
Builds the address for a specific path on the mock server.
Example:
// Start a local mock server for exclusive use by this test function.
let server = httpmock::MockServer::start();
let expected_addr_str = format!("127.0.0.1:{}", server.port());
// Get the address of the MockServer.
let addr = server.address();
// Ensure the returned URL is as expected
assert_eq!(expected_addr_str, addr.to_string());
sourcepub fn url<S: Into<String>>(&self, path: S) -> String
pub fn url<S: Into<String>>(&self, path: S) -> String
Builds the URL for a specific path on the mock server.
Example:
// Start a local mock server for exclusive use by this test function.
let server = httpmock::MockServer::start();
let expected_url = format!("http://127.0.0.1:{}/hello", server.port());
// Get the URL for path "/hello".
let url = server.url("/hello");
// Ensure the returned URL is as expected
assert_eq!(expected_url, url);
sourcepub fn base_url(&self) -> String
pub fn base_url(&self) -> String
Builds the base URL for the mock server.
Example:
// Start a local mock server for exclusive use by this test function.
let server = httpmock::MockServer::start();
let expected_url = format!("http://127.0.0.1:{}", server.port());
// Get the URL for path "/hello".
let url = server.base_url();
// Ensure the returned URL is as expected
assert_eq!(expected_url, url);
sourcepub fn mock<F>(&self, config_fn: F) -> Mock<'_>
pub fn mock<F>(&self, config_fn: F) -> Mock<'_>
Creates a Mock object on the mock server.
Example:
use isahc::get;
let server = httpmock::MockServer::start();
let mock = server.mock(|when, then| {
when.path("/hello");
then.status(200);
});
get(server.url("/hello")).unwrap();
mock.assert();
sourcepub async fn mock_async<'a, F>(&'a self, spec_fn: F) -> Mock<'a>
pub async fn mock_async<'a, F>(&'a self, spec_fn: F) -> Mock<'a>
Creates a Mock object on the mock server.
Example:
use isahc::{get_async};
async_std::task::block_on(async {
let server = httpmock::MockServer::start();
let mock = server
.mock_async(|when, then| {
when.path("/hello");
then.status(200);
})
.await;
get_async(server.url("/hello")).await.unwrap();
mock.assert_async().await;
});