我正在模拟一个 DataStore 和它的获取/设置功能。我遇到的问题是:不能在 EventHandler 的参数中使用 s (type *MockStore) 作为类型 *datastore.Storage这是由于我的 EventHandler 函数需要将 *datastore.Storage 作为参数类型传递。我想使用我创建的 MockStore 而不是真正的数据存储来测试(http 测试)EvenHandler()。我正在使用 golang testify 模拟包。一些代码示例type MockStore struct{ mock.Mock}func (s *MockStore) Get() ... func EventHandler(w http.ResponseWriter, r *http.Request, bucket *datastore.Storage){ //Does HTTP stuff and stores things in a data store // Need to mock out the data store get/sets}// Later in my Testsms := MockStoreEventHandler(w,r,ms)
1 回答
幕布斯7119047
TA贡献1794条经验 获得超8个赞
一些东西:
创建一个将由
datastore.Storage
您的模拟商店实现的接口。使用上述接口作为参数类型 in
EventHandler
(not a pointer to the interface)。将指针传递给您的
MockStore
toEventHandler
,因为该Get
方法是为指向结构的指针定义的。
您更新后的代码应如下所示:
type Store interface {
Get() (interface{}, bool) // change as needed
Set(interface{}) bool
}
type MockStore struct {
mock.Mock
}
func (s *MockStore) Get() ...
func EventHandler(w http.ResponseWriter, r *http.Request,bucket datastore.Storage){
//Does HTTP stuff and stores things in a data store
// Need to mock out the data store get/sets
}
// Later in my Tests
ms := &MockStore{}
EventHandler(w,r,ms)
- 1 回答
- 0 关注
- 165 浏览
添加回答
举报
0/150
提交
取消