モックとスタブを生成するために、リフレクションを使用して Go インターフェイスを実装したいと考えています。しかし、reflectパッケージを見ると、その方法がわかりません (おそらく不可能です)。
WriteHeader(404)
例: FuncがResponseWriterで呼び出すことをテストします。
type ResponseWriterMock struct { //
status int //
} // How to replace
func (*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 インターフェースを実装するにはどうすればよいですか?
補遺