Spy Build Status

Spy crate is inspired by such famous Javascript testing tools as Jasmine and Sinon.js. It provides easy configurable spies with predefined behaviour.

```rust

[test]

fn iteratoralltest() { let integers = vec![0i32, 1i32, 2i32];

// create spy function that returns true if provided // argument is an even number let (spy_fn, spy) = spy!(|n| n % 2 == 0);

// test call let res = integers.iter().all(spy_fn);

// check Iterator::all result assert!(!res, "should be false");

// take a snapshot of made calls let snapshot = spy.snapshot();

// make assertions assert!(snapshot.called(), "should be called"); assert!( snapshot.calledwith(&(&1i32)), "should be called with 1i32 at least once" ); assert!( !snapshot.eachcalledwith(&(&1i32)), "should be called with different arguments" ); asserteq!(snapshot.allcalls(), &vec![(&0i32), (&1i32)]); asserteq!(snapshot.firstcall().expect("should be Some"), &(&0i32)); asserteq!(snapshot.lastcall().expect("should be Some"), &(&1i32)); asserteq!(snapshot.nth_call(1).expect("should be Some"), &(&1i32)); } ```

LICENSE

Spy is licensed under MIT and Apache-2.0 license