No description
Find a file
Mark Hildreth c791dd078e
Merge pull request #5 from markhildreth/fixed-typo
Fixed typo in documentation
2021-02-06 23:51:45 -05:00
.github/workflows Updated github ci.yml 2021-01-17 22:15:43 -05:00
macros Forced futures to be imported through test_context crate. 2021-02-06 23:44:33 -05:00
src Merge branch 'main' into fixed-typo 2021-02-06 23:50:15 -05:00
tests Allow return of wrapped functions value. 2021-01-17 22:02:19 -05:00
.gitignore Initial commit 2021-01-17 15:20:15 -05:00
Cargo.toml Forced futures to be imported through test_context crate. 2021-02-06 23:44:33 -05:00
LICENSE Initial commit 2021-01-17 15:20:15 -05:00
README.md Fixed typo in documentation 2021-02-06 23:48:26 -05:00

test-context

A library for providing custom setup/teardown for Rust tests without needing a test harness.

use test_context::{test_context, TestContext};

struct MyContext {
    value: String
}

impl TestContext for MyContext {
    fn setup() -> MyContext {
        MyContext {  value: "Hello, world!".to_string() }
    }

    fn teardown(self) {
        // Perform any teardown you wish.
    }
}

#[test_context(MyContext)]
#[test]
fn test_works(ctx: &mut MyContext) {
    assert_eq!(ctx.value, "Hello, world!");
}

Works with other test wrappers like actix_rt::test or tokio::test that turn your test function into an async function.

use test_context::{test_context, AsyncTestContext};

struct MyAsyncContext {
    value: String
}

#[async_trait::async_trait]
impl AsyncTestContext for MyAsyncContext {
    async fn setup() -> MyAsyncContext {
        MyAsyncContext { value: "Hello, world!".to_string() }
    }

    async fn teardown(self) {
        // Perform any teardown you wish.
    }
}

#[test_context(MyAsyncContext)]
#[tokio::test]
async fn test_works(ctx: &mut MyAsyncContext) {
    assert_eq!(ctx.value, "Hello, World!");
}

License: MIT