Crates.io | spy |
lib.rs | spy |
version | 0.2.0 |
source | src |
created_at | 2018-06-23 20:01:46.219388 |
updated_at | 2019-08-24 18:09:36.752521 |
description | Rust spy functions for testing purposes |
homepage | https://github.com/AlexPikalov/spy |
repository | https://github.com/AlexPikalov/spy |
max_upload_size | |
id | 71411 |
size | 28,504 |
Spy crate is inspired by such famous Javascript testing tools as Jasmine and Sinon.js. It provides easy configurable spies with predefined behaviour.
#[test]
fn iterator_all_test() {
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.called_with(&(&1i32)),
"should be called with 1i32 at least once"
);
assert!(
!snapshot.each_called_with(&(&1i32)),
"should be called with different arguments"
);
assert_eq!(snapshot.all_calls(), &vec![(&0i32), (&1i32)]);
assert_eq!(snapshot.first_call().expect("should be Some"), &(&0i32));
assert_eq!(snapshot.last_call().expect("should be Some"), &(&1i32));
assert_eq!(snapshot.nth_call(1).expect("should be Some"), &(&1i32));
}
Spy is licensed under MIT and Apache-2.0 license