Lipanski Mockito Versions Save

HTTP mocking for Rust!

1.4.0

2 months ago
  • [Breaking] Bump minimum supported Rust version to 1.70 and revert version constraints on the colored crate

1.3.1

2 months ago
  • Fixed a bug where Semaphore::const_new wasn't available on Tokio < 1.30 because of the missing Tokio parking_lot feature flag
  • Use the Tokio runtime everywhere to remove the need for the futures crate (aside from futures-core)

Thanks to @tottoto

1.3.0

2 months ago
  • Introduced Server::new_with_opts, Server::new_with_opts_async and the ServerOpts struct to allow configuring the server host, port and enabling auto-asserts (see next item)
  • Added the assert_on_drop server option that allows you to automatically call assert() whenever your mocks go out of scope (defaults to false)
  • Expose Server::socket_address() to return the raw server SocketAddr
  • Use only required features for dependencies
  • Accept hyper::header::HeaderValue as a match_header() value

Thanks to @andrewtoth @alexander-jackson

1.2.0

8 months ago
  • [Breaking] The minimum supported Rust version was bumped to 1.68.0
  • The server pool was limited to 20 servers for mac_os targets to prevent hitting the file descriptor limit

Thanks to @kornelski

1.1.1

8 months ago
  • Ensure with_chunked_body supports streaming responses (as opposed to writing the entire buffer in one go)

Thanks to @kornelski

1.1.0

11 months ago

1.0.2

1 year ago

1.0.1

1 year ago
  • Fixed an issue where futures::future::join_all would block the server pool.
  • Server::reset_async has been deprecated in favour of Server::reset since the former doesn't have an async implementation any more.

1.0.0

1 year ago

:balloon: 7 years and 63 releases later, it's finally time for the 1.0 :balloon:

Changes

  • [Breaking] The legacy interface was removed in this version
  • [Breaking] Mock::with_body_from_fn was renamed to Mock::with_chunked_body - the former is still supported with a deprecation warning
  • Mocks are only cleared when the server is dropped, not when the mock is dropped - this means you don't have to assign mocks to variables any more (unless you want to call other methods on them)
  • Introduced the Mock::remove and Mock::remove_async methods to remove mocks on demand

Major changes since 0.31

  • Tests can now run in parallel
  • Support for HTTP2
  • An async interface for all actions (though the sync interface is also available)
  • Mock multiple server/hosts at the same time

For a list of all the changes please check the release log.

Migrating to the new API

Legacy API:

let m1 = mockito::mock("GET", "/hello").with_body("hello").create();
let m2 = mockito::mock("GET", "/bye").with_body("bye").create();

// Use one of these to configure your client
let host = mockito:server_address();
let url = mockito::server_url();

New API:

let mut server = mockito::Server::new();
server.mock("GET", "/hello").with_body("hello").create();
server.mock("GET", "/bye").with_body("bye").create();

// Use one of these to configure your client
let host = server.host_with_port();
let url = server.url();

If you can't migrate to the new API in one go, consider using version 0.32.5, which supports both the legacy API as well as the new API.

Migrating to the async API

In order to write async tests, you'll need to use the _async methods:

  • Server::new_async
  • Mock::create_async
  • Mock::assert_async
  • Mock::matched_async
  • Mock::remove_async
  • Server::reset_async

...otherwise your tests will not compile and you'll see this error:

Cannot block the current thread from within a runtime. This happens because a function attempted 
to block the current thread while the thread is being used to drive asynchronous tasks.

Example:

#[tokio::test]
async fn test_simple_route_mock_async() {
    let mut server = Server::new_async().await;
    let m1 = server.mock("GET", "/a").with_body("aaa").create_async().await;
    let m2 = server.mock("GET", "/b").with_body("bbb").create_async().await;

    let (m1, m2) = futures::join!(m1, m2);

    // You can use `Mock::assert_async` to verify that your mock was called
    // m1.assert_async().await;
    // m2.assert_async().await;
}

0.32.5

1 year ago
  • Implement and enable a new server pool and get rid of the deadpool dependency
  • Replace the mpsc mock/server communication with Arc (more reliable in this case)
  • Split sync & async paths more clearly