Use the Test Queue for testing
masterWhen initializing Segment::Analytics, you can pass test: true to capture all requests in a local test_queue instead of sending them to Segment. This allows you to inspect sent events during automated tests.
To prevent real network calls during specs, combine test: true with stub: true.
Key Test Queue methods:
client.test_queue.all: Returns all messages in the queue.client.test_queue.track: Returns only track events.client.test_queue.alias: Returns only alias events.client.test_queue.group: Returns only group events.client.test_queue.identify: Returns only identify events.client.test_queue.page: Returns only page events.client.test_queue.screen: Returns only screen events.client.test_queue.reset!: Clears the queue.
client = Segment::Analytics.new(write_key: 'YOUR_WRITE_KEY', test: true)
client.track(user_id: 'foo', event: 'bar')
# Inspect the captured event
client.test_queue.all
# [
# {
# :context => { :library => { :name => "analytics-ruby", :version => "2.2.8.pre" } },
# :messageId => "e9754cc0-1c5e-47e4-832a-203589d279e4",
# :timestamp => "2021-02-19T13:32:39.547+01:00",
# :userId => "foo",
# :type => "track",
# :event => "bar",
# :properties => {}
# }
# ]
# Clear the queue for the next test
client.test_queue.reset!