xhd2015/xgo

是否有办法在Patch replacer里去做assert

Closed this issue · 2 comments

我的场景是想在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的,但没有在测试结果里体现出来。

是可以的,如果你没有看到报错,尝试改成assert.Equal(t, "testGroupUid_ERROR", members[0].GroupUID) panic("test"), 看看有没有抛出错误。
如果没有,说明没有走到这个函数,可以通过xgo e的debug功能来查看问题所在。

感谢回复,确实可以。