4 releases
0.9.3 | Oct 1, 2024 |
---|---|
0.9.2 | Sep 3, 2024 |
0.9.1 | Sep 3, 2024 |
0.9.0 | Sep 1, 2024 |
#196 in Testing
731 downloads per month
18KB
81 lines
factori-imp(roved)
A testing factory library for Rust, inspired by:
A fork of mjkillough/factori library, to add additional features.
factori-imp(roved) makes it easy to instantiate your test objects/fixtures in tests while providing an ergonomic syntax for defining how they are instantiated.
factori-imp works on stable Rust >=1.45.
Differences with factori
- Transient attributes as first class citizens, see tests/transient.rs
- Adds
create_vec!
macro, see tests/create_vec.rs create*
macros can be used in factory declarations, see tests/simple.rs:34- Contributed by @wuerges, thank you
- Fixes all clippy warnings due to usage of the macros
Documentation
https://docs.rs/factori-imp/latest/factori_imp/
In place replacement for factori
You can use factori-imp without changing any code, in your Cargo.toml:
- factori = "1.1.0"
+ factori = { package = "factori-imp", version = "0.9.2" }
or just add it as a regular dependency and then rename the crate in your crate root:
extern crate factori-imp as factori;
Example
factori-imp(roved) provides three macros:
factori!
, which defines a factory for a typecreate!
which instantiates itcreate_vec!
which instantiates many
#[macro_use]
extern crate factori;
pub struct Vehicle {
number_wheels: u8,
electric: bool,
}
factori!(Vehicle, {
default {
number_wheels = 4,
electric = false,
}
mixin bike {
number_wheels = 2,
}
});
fn main() {
let default = create!(Vehicle);
assert_eq!(default.number_wheels, 4);
assert_eq!(default.electric, false);
// Its type is Vehicle, nothing fancy:
let vehicle: Vehicle = default;
let three_wheels = create!(Vehicle, number_wheels: 3);
assert_eq!(three_wheels.number_wheels, 3);
let electric_bike = create!(Vehicle, :bike, electric: true);
assert_eq!(electric_bike.number_wheels, 2);
assert_eq!(electric_bike.electric, true);
// We can create many vehicles
let many_motorcycles = create_vec!(Vehicle, 5, number_wheels: 2);
assert_eq!(many_motorcycles.len(), 5);
}
More examples are available in the
tests/
directory.
Testing
Install cargo-nextest
Run:
make test
License
MIT
Dependencies
~1.5MB
~37K SLoC