我有文件util.go
:
func Foo(service *SomeService) error {
return helper(service)
}
func helper(service *SomeService) error {
...
}
我从testify
开始使用Foo
编写单元测试。我要:
helper
helper
被调用1次我在{{3}}看到了一些有前途的解决方案,但是不确定:
方法1:将辅助程序作为Foo
的参数。我的疑问:作证需要AssertNumberOfCalls的Mock结构,这里没有结构。
方法2:为Foo
创建一个结构。我的疑问:我不知道为utils构建结构是否有意义。由于Foo
的调用者将需要一个utils结构,因此还需要更多的重构。
执行此操作的最佳方法是什么?
答案 0 :(得分:-1)
如果只想测试helper
中被调用的args,这就是我一直在使用的一种方法。相同的测试还将证明您的助手被准确地调用过一次。
// Code
var originalFn = func(arg1, arg2 string) {
...
}
func Foo() {
originalFn(arg1,arg2)
}
// Tests
func TestFoo(t *testing.T) {
tempFn := originalFn
var fnArgs []string
originalFn = func(arg1, arg2) {
fnArgs = append(fnArgs, []string{arg1, arg2})
}
defer originalFn = tempFn
tests := []struct{
expected []string
}{
{
expected: []string{"arg1", "arg2"},
},
}
for _, tt:= range tests {
fnArgs := make([]string, 0)
Foo()
assert.Equal(t, tt.expected, fnArgs)
}
}