2 unstable releases
Uses old Rust 2015
0.2.0 | Mar 21, 2018 |
---|---|
0.1.0 | Mar 19, 2018 |
#77 in #snapshot
260KB
387 lines
snaptest
Dead simple snapshot testing (inspired by jest).
Documentation (including this README) is a work in progress. Feel free to submit an issue if you have a question about usage.
Features
- Any type that implements
Debug
can be returned from a test. - First class integration with
failure
. - The snapshot store is thread safe so your tests can run in parallel.
- Beautiful diffs are printed when a snapshot test fails.
- A single small binary file is used to store snapshots.
TODO
Installation
First, add snaptest
to the dependencies section of your Cargo.toml
:
[dependencies]
snaptest = "0.1"
Next, add the following snippet to the entry point of your crate (lib.rs
or main.rs
):
#[macro_use]
extern crate snaptest;
Usage
Derive Debug
on types that you want to use with snaptest:
use std::str::FromStr;
#[derive(Debug)]
pub struct User {
connection: Connection,
name: String,
}
#[derive(Debug)]
pub enum Connection {
Online,
Offline,
}
impl FromStr for User {
// ...
}
Now, in the test module for the User
struct:
snaptest!{
fn parse_user() -> Result<User, Error> {
"Zak:online".parse()
}
}
Next time your test runs, a snapshot will be added to a local .snapfile
to compare against future test results. If you get a different result back than what matches the snapshot, the test will fail and the diff will be printed to the console.
License
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
Dependencies
~0.5–1MB
~16K SLoC