私は、Goのプロジェクトの関数の単体テストを書くことを試みています。私は前に遭遇したことのない問題に対して立ち向かっています。この関数は、Slack(メッセージングプラットフォーム)を特定のイベント構造(私が使用しているライブラリで定義されたもの)で監視し、返されたイベント(スイッチを使用)に応じて応答するループで使用されます。Golangでテスト目的でチャネルにデータを送信するにはどうすればよいですか?
func botLoop(s *SlackBot) {
select {
case rtmEvent := <-s.Rtm.IncomingEvents:
switch ev := rtmEvent.Data.(type) {
case *slack.MessageEvent:
o, err := s.HandleCommand(ev)
if err != nil {
fmt.Printf("%s\n", err)
s.Say(ev.Channel, "%s\n", err)
break
}
s.Say(ev.Channel, o)
case *slack.LatencyReport:
fmt.Printf("Current latency: %v\n", ev.Value)
default:
// fmt.Printf("Unexpected: %v\n", msg.Data)
}
}
どのように私はテスト目的のために私のコードをトリガするs.Rtm.IncomingEventチャネルに「rtmEvents」を渡すことができます:ここ(のほとんど)は、コードがですか?確実にこれを行う方法はありますか?
Here's the documentation for the API library I'm usingこれがあれば、それは簡単です。