Skip to content

Rust spy functions for testing purposes

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

AlexPikalov/spy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Spy Build Status


Documentation

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));
}

LICENSE

Spy is licensed under MIT and Apache-2.0 license

About

Rust spy functions for testing purposes

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages