Module: Sentry::TestHelper
- Defined in:
- lib/sentry/test_helper.rb
Constant Summary collapse
- DUMMY_DSN =
- "http://12345:[email protected]/sentry/42"
Instance Method Summary collapse
- 
  
    
      #extract_sentry_exceptions(event)  ⇒ Array<Sentry::SingleExceptionInterface> 
    
    
  
  
  
  
  
  
  
  
  
    Extracts SDK’s internal exception container (not actual exception objects) from an given event. 
- 
  
    
      #last_sentry_event  ⇒ Event? 
    
    
  
  
  
  
  
  
  
  
  
    Returns the last captured event object. 
- 
  
    
      #sentry_envelopes  ⇒ Array<Envelope> 
    
    
  
  
  
  
  
  
  
  
  
    Returns the captured envelope objects. 
- 
  
    
      #sentry_events  ⇒ Array<Event> 
    
    
  
  
  
  
  
  
  
  
  
    Returns the captured event objects. 
- #sentry_transport ⇒ Transport
- 
  
    
      #setup_sentry_test {|config| ... } ⇒ void 
    
    
  
  
  
  
  
  
  
  
  
    Alters the existing SDK configuration with test-suitable options. 
- 
  
    
      #teardown_sentry_test  ⇒ void 
    
    
  
  
  
  
  
  
  
  
  
    Clears all stored events and envelopes. 
Instance Method Details
#extract_sentry_exceptions(event) ⇒ Array<Sentry::SingleExceptionInterface>
Extracts SDK’s internal exception container (not actual exception objects) from an given event.
| 83 84 85 | # File 'lib/sentry/test_helper.rb', line 83 def extract_sentry_exceptions(event) event&.exception&.values || [] end | 
#last_sentry_event ⇒ Event?
Returns the last captured event object.
| 77 78 79 | # File 'lib/sentry/test_helper.rb', line 77 def last_sentry_event sentry_events.last end | 
#sentry_envelopes ⇒ Array<Envelope>
Returns the captured envelope objects.
| 71 72 73 | # File 'lib/sentry/test_helper.rb', line 71 def sentry_envelopes sentry_transport.envelopes end | 
#sentry_events ⇒ Array<Event>
Returns the captured event objects.
| 65 66 67 | # File 'lib/sentry/test_helper.rb', line 65 def sentry_events sentry_transport.events end | 
#sentry_transport ⇒ Transport
| 59 60 61 | # File 'lib/sentry/test_helper.rb', line 59 def sentry_transport Sentry.get_current_client.transport end | 
#setup_sentry_test {|config| ... } ⇒ void
This method returns an undefined value.
Alters the existing SDK configuration with test-suitable options. Mainly:
- 
Sets a dummy DSN instead of ‘nil` or an actual DSN. 
- 
Sets the transport to DummyTransport, which allows easy access to the captured events. 
- 
Disables background worker. 
- 
Makes sure the SDK is enabled under the current environment (“test” in most cases). 
It should be called before every test case.
| 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | # File 'lib/sentry/test_helper.rb', line 17 def setup_sentry_test(&block) raise "please make sure the SDK is initialized for testing" unless Sentry.initialized? dummy_config = Sentry.configuration.dup # configure dummy DSN, so the events will not be sent to the actual service dummy_config.dsn = DUMMY_DSN # set transport to DummyTransport, so we can easily intercept the captured events dummy_config.transport.transport_class = Sentry::DummyTransport # make sure SDK allows sending under the current environment dummy_config.enabled_environments += [dummy_config.environment] unless dummy_config.enabled_environments.include?(dummy_config.environment) # disble async event sending dummy_config.background_worker_threads = 0 # user can overwrite some of the configs, with a few exceptions like: # - include_local_variables # - auto_session_tracking block&.call(dummy_config) # the base layer's client should already use the dummy config so nothing will be sent by accident base_client = Sentry::Client.new(dummy_config) Sentry.get_current_hub.bind_client(base_client) # create a new layer so mutations made to the testing scope or configuration could be simply popped later Sentry.get_current_hub.push_scope test_client = Sentry::Client.new(dummy_config.dup) Sentry.get_current_hub.bind_client(test_client) end | 
#teardown_sentry_test ⇒ void
This method returns an undefined value.
Clears all stored events and envelopes. It should be called after every test case.
| 46 47 48 49 50 51 52 53 54 55 56 | # File 'lib/sentry/test_helper.rb', line 46 def teardown_sentry_test return unless Sentry.initialized? # pop testing layer created by `setup_sentry_test` # but keep the base layer to avoid nil-pointer errors # TODO: find a way to notify users if they somehow popped the test layer before calling this method if Sentry.get_current_hub.instance_variable_get(:@stack).size > 1 Sentry.get_current_hub.pop_scope end Sentry::Scope.global_event_processors.clear end |