2个不稳定版本

使用旧的Rust 2015

0.2.0 2018年3月21日
0.1.0 2018年3月19日

#2676 in Rust模式

MIT/Apache

260KB
387

snaptest

CircleCI branch AppVeyor branch Crates.io

简单直观的快照测试(灵感来自 jest)。

文档(包括此README)正在制作中。如有关于使用方面的问题,请随时提交问题。

特性

  • 任何实现了 Debug 的类型都可以从测试中返回。
  • failure 的一级集成。
  • 快照存储是线程安全的,因此您的测试可以并行运行。
  • 当快照测试失败时,会打印出美观的差异。
  • 使用单个小型二进制文件存储快照。

待办事项

安装

首先,将 snaptest 添加到您的 Cargo.toml 文件的依赖关系部分

[dependencies]
snaptest = "0.1"

接下来,将以下代码片段添加到您的crate的入口点(lib.rsmain.rs

#[macro_use]
extern crate snaptest;

使用方法

在您想与snaptest一起使用的类型上派生 Debug

use std::str::FromStr;

#[derive(Debug)]
pub struct User {
    connection: Connection,
    name: String,
}

#[derive(Debug)]
pub enum Connection {
    Online,
    Offline,
}

impl FromStr for User {
  // ...
}

现在,在 User 结构的测试模块中

snaptest!{
    fn parse_user() -> Result<User, Error> {
        "Zak:online".parse()
    }
}

下次运行测试时,快照将添加到本地的 .snapfile 中,以便与未来的测试结果进行比较。如果您得到的结果与快照不匹配,测试将失败,差异将被打印到控制台。

Snaptest Example

许可证

根据您的选择,许可以下之一

贡献

除非您明确声明,否则任何有意提交以包含在作品中的贡献,根据Apache-2.0许可证定义,均应如上所述双重许可,不附加任何额外条款或条件。

依赖关系

~0.5–1MB
~16K SLoC