是否有办法在Patch replacer里去做assert
jobsLee-lcj opened this issue · 2 comments
jobsLee-lcj commented
我的场景是想在test case 里验证被调函数入参确实如预期的那样。例如:
mock.Patch(store.BatchInsertIamGroupMembers, func(ctx context.Context, members []*store.IAMGroupMember) error {
assert.Equal(t, 1, len(members))
assert.Equal(t, "testGroupUid3", members[0].GroupUID)
assert.Equal(t, "testUserUid2", members[0].UserUID)
return nil
})
在我的代码里会先对本地数据库和远程Server查询出来的IAMGroupMembers数组做一个diff,把diff的部分做批量插入数据库的操作。那在单测里我想验证被插入的members确实符合预期。上面例子里的assert.Equal(t, "testGroupUid3", members[0].GroupUID)
应该fail的,但没有在测试结果里体现出来。
xhd2015 commented
是可以的,如果你没有看到报错,尝试改成assert.Equal(t, "testGroupUid_ERROR", members[0].GroupUID)
或panic("test")
, 看看有没有抛出错误。
如果没有,说明没有走到这个函数,可以通过xgo e的debug功能来查看问题所在。
jobsLee-lcj commented
感谢回复,确实可以。