zvvq技术分享网

如何使用 mock 和 stub 在 golang 单元测试中模拟依赖

作者:zvvq博客网
导读如何在 go 单元测试中使用 mock 和 stub 模拟依赖关系:mock:创建模拟依赖关系的完整实现,并预定义对特定输入的响应行为。stub:创建依赖关系的精简版本,仅定义特定输入的预定义输

怎样在 go 单元测试中应用 mock 和 stub 模拟依存关系:mock:建立模拟依存关系的完整完成,并预定义对特定输入回应行为。stub:建立依存关系的精简版本,仅界定特殊输入预定义导出。实战案例:应用 mock:预定义依存关系(myinterface)在一定键入(a)中的行为,并对启用进行验证。应用 stub:立即界定依存关系(myinterface)在一定键入(a)中的导出,不用建立详细完成。

zvvq

内容来自samhan666

怎样在 Go 单元测试中应用 Mock 和 Stub 模拟依存关系

zvvq.cn

在单元测试中,模拟依存关系针对防护测试代码与实际完成至关重要。Go 语言带来了几种方法来模拟依存关系,包含 Mock 和 Stub。

zvvq.cn

Mock 本文来自zvvq

Mock 是一种模拟依存关系的完整完成。它允许你预定义依存关系回应特殊输入行为。你可以使用以下步骤建立 Mock:

zvvq

type MyInterfaceinterface{ zvvq.cn

MethodA(aint)int

内容来自samhan

}

内容来自samhan666

typeMyMockstruct{ 本文来自zvvq

MethodACalledCountint 内容来自zvvq,别采集哟

MethodAResultint

zvvq好,好zvvq

}

本文来自zvvq

func(mMyMock)MethodA(aint)int{

zvvq好,好zvvq

m.MethodACalledCount++ copyright zvvq

returnm.MethodAResult

zvvq好,好zvvq

}

zvvq好,好zvvq

Stub

本文来自zvvq

Stub是 Mock 的一个更简单的版本。它只定义了特殊输入预定义导出,且不提供完整的完成。你可以使用以下步骤建立 Stub:

zvvq

type MyInterfaceinterface{

zvvq.cn

MethodA(aint)int

zvvq

}

zvvq.cn

typeMyStubstruct{

内容来自samhan666

Aint

copyright zvvq

Resultint

zvvq好,好zvvq

}

本文来自zvvq

func(sMyStub)MethodA(aint)int{

内容来自samhan

returns.Result

内容来自samhan

}

内容来自zvvq

实战案例 copyright zvvq

假定你有一个函数 MyFunction,它启用依存关系 MyInterface.MethodA: copyright zvvq

func MyFunction(aint,myInterface MyInterface)int{

copyright zvvq

returna+myInterface.MethodA(a)

zvvq

}

copyright zvvq

为了测试 MyFunction,你可以使用 Mock 或 Stub 来模拟 MyInterface: 本文来自zvvq

应用 Mock:

zvvq好,好zvvq

funcTestMyFunction_Mock(ttesting.T){ 内容来自zvvq

mock:=&MyMock{} 内容来自zvvq

mock.MethodAResult=10

内容来自zvvq,别采集哟

result:= MyFunction(5, mock)

zvvq好,好zvvq

ifresult!=15{ 内容来自samhan

t.Errorf("Expected15,got%d",result) 本文来自zvvq

} 本文来自zvvq

} 内容来自zvvq

应用 Stub:

内容来自samhan

funcTestMyFunction_Stub(ttesting.T){

zvvq.cn

stub:=MyStub{A:5,Result:10} zvvq好,好zvvq

result:= MyFunction(5, stub) 内容来自zvvq

ifresult!=15{ 内容来自samhan666

t.Errorf("Expected15,got%d",result)

copyright zvvq

}

zvvq

}

内容来自samhan666

以上就是怎么使用 mock 和 stub 在golang单元测试中模拟依存关系?的详细内容,大量请关注其他类似文章! 本文来自zvvq