golang 打桩,mock 数据怎么玩?
在Go语言中,打桩(mocking)数据通常是为了进行单元测试。你可以使用mock
包或其他第三方库来创建模拟对象。以下是一个使用mock
包的简单示例:
首先,定义一个接口:
package mypackage
type MyInterface interface {
GetData() (int, error)
}
然后,创建一个模拟实现:
package mypackage
import "testing"
type MockMyInterface struct {
t testing.TB
getDataErr error
getDataVal int
}
func NewMockMyInterface(t testing.TB) *MockMyInterface {
return &MockMyInterface{t: t}
}
func (m *MockMyInterface) GetData() (int, error) {
if m.getDataErr != nil {
return 0, m.getDataErr
}
return m.getDataVal, nil
}
func (m *MockMyInterface) SetGetDataResponse(value int, err error) {
m.getDataVal = value
m.getDataErr = err
}
在单元测试中使用模拟:
package mypackage
import "testing"
func TestMyFunction(t *testing.T) {
mock := NewMockMyInterface(t)
mock.SetGetDataResponse(123, nil)
// 使用模拟对象
data, err := mock.GetData()
if err != nil {
t.Errorf("unexpected error: %v", err)
}
if data != 123 {
t.Errorf("expected 123, got %d", data)
}
}
这个例子展示了如何创建一个模拟实现了MyInterface
接口的对象,并设置了GetData
方法的模拟响应。在单元测试中,你可以用模拟对象代替实际的实现,以此来隔离依赖并进行测试。
评论已关闭