gpt4 book ai didi

unit-testing - 如何对结构构造函数进行单元测试

转载 作者:行者123 更新时间:2023-11-29 08:19:35 26 4
gpt4 key购买 nike

如果我有这样的结构:

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?
}

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

最佳答案

让编译器为 Foo 导出 Eq 特征(如果可能),然后使用 assert_eq! 宏检查是否相等。出于某种原因,该宏还需要实现 Show,因此我们也推导它。您原来的 default() 函数实际上并没有编译,因为它试图返回一个 Foo ,其中 promise 了一个 ~FooFoo~Foo 实际上是不同的类型,但您可以取消引用 ~Foo 并比较它。

您可能还对默认特征感兴趣。

#[deriving(Eq,Show)]
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};
assert_eq!(foo1,foo2);
}

#[test]
fn test_foo_deref() {
let foo1 = Foo::default();
let foo2 = Foo{bar: 0, baz: false};
assert_eq!(*foo1,foo2);
}

关于unit-testing - 如何对结构构造函数进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23140519/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com