nsqio / go-nsq

The official Go package for NSQ
MIT License
2.59k stars 444 forks source link

producer/consumer: ability to mock for tests #182

Closed jchauncey closed 7 years ago

jchauncey commented 8 years ago

Would be awesome if there was some way to create a mock producer/consumer that acted like it was actually interacting with a real nsq instance.

jchauncey commented 8 years ago

Basically I'd like to have some of these methods made public - https://github.com/nsqio/go-nsq/blob/master/mock_test.go

jehiah commented 8 years ago

@jchauncey I'm not sure how i feel about exposing an interface in go-nsq for testing, but I've used this to much success https://gist.github.com/jehiah/572be9b20c55e5ebbd2d21c73da5b08e It might be sufficient for your needs too. The included NoOpMessageDelegate can make it easier to construct nsq.Message for calling a handler directly to test consumers.

jchauncey commented 8 years ago

So what i wanted to do was test the consumption of a mock message in an app I was writing without having to actually start nsq. I ended up copying a lot of the functions in mock_test to get it to work but that seemed rather clunky.

mreiferson commented 8 years ago

The code in mock_test feels like too much to be exporting, mostly because it's designed to validate low level protocol behaviors.

I feel like what you want could be much simpler, and depending on what we came up with I think we could at least consider providing as a set of exported types in go-nsq.

Are you interested in taking a pass?

mreiferson commented 7 years ago

See #146

sefasenturk95 commented 6 years ago

Is it still not possible to mock NSQ?