Go 测试用例中模拟结构体方法
Go 中无需在源码中引入接口即可实现结构体方法的模拟调用。具体方法如下:
模拟示例结构和方法
考虑以下结构和方法:
type A struct {} func (a *A) perfom(string){ ... ... .. }
测试用例中的模拟
模拟执行方法进行测试案例:
type Performer interface { perform(string) }
type AMock struct {} func (a *AMock) perform(string) { // Mocked behavior } type A struct {} func (a *A) perform(string) { // Real implementation }
func invoke(url string, p Performer) { out := p.perfom(url) ... ... }
func TestInvokeWithMock(t *testing.T) { var amok = &AMock{} invoke("url", amok) // Verify mock behavior (e.g., assert it was called with the correct argument) }
func TestInvokeWithReal(t *testing.T) { var a = &A{} invoke("url", a) // No need for verification since it's the real implementation }
其他选项
像 [testify/mock](https://godoc.org/github.com/stretchr/ testify/mock)提供更强大的模拟功能,允许您控制模拟行为并验证方法调用。
以上是如何在没有接口的 Go 测试用例中模拟结构体方法?的详细内容。更多信息请关注PHP中文网其他相关文章!