class_docstr: Test class for SlackOutput
class_docstr_tok: ["Test","class","for","SlackOutput"]
docstr: SlackOutput - Dispatch Failure, Bad Descriptor
docstr_tok: ["SlackOutput","-","Dispatch","Failure",",","Bad","Descriptor"]
code: def test_dispatch_bad_descriptor(self, log_mock):
      """SlackOutput - Dispatch Failure, Bad Descriptor"""
      assert_false(
          self._dispatcher.dispatch(
              get_alert(), ":".join([self.SERVICE, "bad_descriptor"])
          )
      )
  
      log_mock.assert_called_with(
          "Failed to send alert to %s:%s",
          self.SERVICE,
          "bad_descriptor",
      )
  
imports: from collections import Counter, OrderedDict
  from mock import patch, Mock, MagicMock
  from nose.tools import assert_equal, assert_false, assert_true, assert_set_equal
  from streamalert.alert_processor.helpers import compose_alert
  from streamalert.alert_processor.outputs.slack import SlackOutput
  from tests.unit.streamalert.alert_processor.helpers import get_random_alert, get_alert
label_desc: Use image node_id 23 for calling the TestSlackOutput obj's underlying member method code with example usage: obj.test_dispatch_bad_descriptor(log_mock) without return types