如何单元测试struct构造函数

时间:2014-04-17 18:16:30

标签: unit-testing struct rust

如果我有一个结构:

struct Foo {
  bar: int,
  baz: bool
}

和一个默认构造函数,如:

impl Foo {
  fn default() -> ~Foo {
    Foo{bar: 0, baz: false}
  }
}

我想要为我的构造函数进行单元测试:

#[test]
fn test_foo_default() {
  let foo1 = Foo::default();
  let foo2 = ~Foo{bar: 0, baz: false};
  // What to put here to compare them?
}

如何最简单地比较两个结构以确保它们在内容,类型和所有权方面是相同的?

1 个答案:

答案 0 :(得分:1)

让编译器为Foo导出Eq特征(如果可能),然后检查与assert_eq!宏的相等性。宏也要求Show出于某种原因实现,所以我们也可以派生它。您的原始default()函数实际上没有编译,因为它尝试返回承诺Foo的{​​{1}}。 ~FooFoo实际上是不同的类型,但您可以取消引用~Foo并进行比较。

您可能也对默认特质感兴趣。

~Foo