Go 在测试中设置/重置模拟函数
示例
本示例说明如何模拟与单元测试无关的函数调用,然后使用defer语句将模拟的函数调用重新分配回其原始函数。
var validate = validateDTD
// ParseXML解析b以获取XML元素和值,并将其作为以下内容的映射返回
// 字符串键/值对。
func ParseXML(b []byte) (map[string]string, error) {
// 我们不在乎在单元测试中针对DTD进行验证
if err := validate(b); err != nil {
return err
}
// 解析b等的代码
}
func validateDTD(b []byte) error {
// 从某些外部存储中获取DTD,并使用它来验证b等。
}在我们的单元测试中
func TestParseXML(t *testing.T) {
// 将原始验证函数分配给变量。
originalValidate = validate
// 在此测试中使用mockValidate函数。
validate = mockValidate
// 将重新分配推迟回原始验证功能。
defer func() {
validate = originalValidate
}()
var input []byte
actual, err := ParseXML(input)
// 断言等
}
func mockValidate(b []byte) error {
return nil // 总是返回nil
}
热门推荐
10 八一幼儿祝福语大全简短
11 公司乔迁食堂祝福语简短
12 婚礼结束聚餐祝福语简短
13 儿媳买车妈妈祝福语简短
14 毕业送礼老师祝福语简短
15 同事辞职正常祝福语简短
16 恭贺新婚文案祝福语简短
17 金店立秋祝福语简短英文
18 婆婆高寿祝福语大全简短