为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用反射实现或模拟Go接口?

如何使用反射实现或模拟Go接口?

Go
回首忆惘然 2021-05-06 09:26:46
我想用反射实现Go接口以生成模拟和存根。但是,如果我看一看反射包,我不知道该怎么做(也许是不可能的)。例如:测试是否FUNC电话WriteHeader(404)上ResponseWriter:type ResponseWriterMock struct {                              //  status int                                                  //}                                                             // How to replacefunc (*ResponseWriterMock) Header() Header {}                 // this block with func (*ResponseWriterMock) Write([]byte) (i int, e error) {}  // a reflectivly func (m *ResponseWriterMock) WriteHeader(status int) {        // generated mock?   m.status = status                                           //  }                                                             //responseWriterMock := new(ResponseWriterMock)funcToTest(responseWriterMock)if responseWriterMock.status != 404 {    // report error}使用RhinoMocks(C#),我会这样写:var responseWriterMock = MockRepository.GenerateMock<ResponseWriter>();funcToTest(responseWriterMock);responseWriterMock.AssertWasCalled(rw => rw.WriteHeader(404));如何使用反射实现Go接口?
查看完整描述

2 回答

?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

据我所知和有关问题的答案,不可能在运行时创建新类型。

您可能想尝试应该支持在Universe中定义新类型的go-eval程序包。


查看完整回答
反对 回复 2021-05-17
  • 2 回答
  • 0 关注
  • 202 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信