Crates.io | specit |
lib.rs | specit |
version | 0.4.0 |
source | src |
created_at | 2020-09-09 23:00:37.219906 |
updated_at | 2021-01-09 06:31:36.865778 |
description | Spec "it" for Rust testing |
homepage | |
repository | https://github.com/nwtgck/specit-rust |
max_upload_size | |
id | 286865 |
size | 13,462 |
Spec "it" for Rust testing
# Cargo.toml
[dev-dependencies]
specit = "0.3.0"
use specit::it;
#[it("should be correct")]
fn t() {
assert_eq!(2 + 2, 4);
}
#[it("should be wrong")]
#[should_panic]
fn t() {
assert_eq!(1 + 1, 3);
}
The test output is like the following.
running 2 tests
test should_be_correct ... ok
test should_be_wrong ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
use specit::describe;
#[describe("arithmetic operations")]
mod m {
use specit::it;
#[it("should add two numbers")]
pub fn t() {
assert_eq!(2 + 2, 4);
}
#[it("should multiple two numbers")]
pub fn t() {
assert_eq!(3 * 3, 9);
}
}
The test output with describe
is like the following.
running 2 tests
test arithmetic_operations::should_add_two_numbers ... ok
test arithmetic_operations::should_multiple_two_numbers ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
You can test with #[tokio::test]
for asynchronous functions.
use specit::it;
#[it("should work with tokio::test")]
#[tokio::test]
async fn t() {
let f = async { 10 };
assert_eq!(f.await, 10);
}
You can get short your code using the following features in each asynchronous runtime.
features = ["tokio"]
You can use use specit::tokio_it as it
for testing asynchronous functions without #[tokio::test]
like the following.
use specit::tokio_it as it;
#[it("should work with tokio")]
async fn t() {
let f = async { 10 };
assert_eq!(f.await, 10);
}
features = ["async-std"]
Use #[it(...)]
instead of #[async_std::test]
as follows.
use specit::async_std_it as it;
#[it("should be correct")]
async fn t() {
let f = async { 10 };
assert_eq!(f.await, 10);
}
features = ["lib-wasm-bindgen"]
Use #[it(...)]
instead of #[wasm_bindgen_test::wasm_bindgen_test]
as follows.
use specit::wasm_bindgen_test_it as it;
use wasm_bindgen::prelude::JsValue;
use wasm_bindgen_futures::JsFuture;
#[it("should be correct")]
async fn t() {
let promise = js_sys::Promise::resolve(&JsValue::from(42));
let x = JsFuture::from(promise).await.unwrap();
assert_eq!(x, 42);
}
Internally, the functions above are should_be_correct()
and should_be_wrong()
. You can use any string. Non-alphanum characters are encoded into '_'
.