能够断言在我的测试中调用假/模拟方法的次数对我来说很重要,我想知道在没有使用像testify之类的东西的情况下最好的方法是什么。在我的例子中,对mocked方法的调用是一些递归调用的结果。
假设我有各种动物的表格驱动测试,我想断言Hello实际上是为某些测试而不是其他测试。在某些情况下,对于给定的测试(迭代切片),应该多次调用它。
在我的表驱动测试中添加一个计数器并对其进行断言是否合适?在我看来,也许有更好的方法来做到这一点。
如果我确实在hello方法中添加了一个计数器......在哪里处理并检查它。在假方法本身或在测试等?
type fakeFarmService struct {
abc.someFarmServiceInterface
}
func (f *fakeFarmService) Hello(ctx context.Context, in *abc.FarmRequest) (*abc.FarmResponse, error) {
if in.GetAnimal() == Monkey {
return &abc.HelloResponse{}, nil
}
return nil, errors.New("an error")
}
答案 0 :(得分:1)
我在结构上使用了counter的方法,然后在包级别单元测试中多次断言它在过去。尽管如此,它可能只是在程序包级别之前,当你想测试这样的内部断言时。我相信在Go中这是一种可接受的方式。如果您决定使用全局变量或同时运行测试,请注意正确同步对计数器的访问。
#[get("/foo")]
fn foo() -> Content<Json> {
let r = json!({
"foo": 1
})
Content(ContentType::new("application", "hal+json"), Json(r))
}
https://play.golang.org/p/RXKuLKIZwc(测试错误在游乐场内不起作用)
Go中高级测试的一些好材料