pub async fn merino_test<FSettings, FTest, Fut>(
    settings_changer: FSettings,
    test: FTest
) -> Fut::Output where
    FSettings: FnOnce(&mut Settings),
    FTest: Fn(TestingTools) -> Fut,
    Fut: Future
Expand description

Run a test with a fully configured Merino server.

The server will listen on a port assigned arbitrarily by the OS.

A suite of tools will be passed to the test function in the form of an instance of TestingTools. It includes an HTTP client configured to use the test server, an HTTP mock server that Remote Settings has been configured to read from, and a log collector that can make assertions about logs that were printed.

Example

#[actix_rt::test]
async fn a_test() {
    merino_test(
        |settings| settings.debug = false,
        |TestingTools { test_client, mut log_watcher, .. }| async move {
            assert!(true) // Test goes here
        }
    ).await
}

Panics

May panic if tests could not be set up correctly.