class_docstr: Test class for PhantomOutput
class_docstr_tok: ["Test","class","for","PhantomOutput"]
docstr: PhantomOutput - Dispatch Failure, Bad Descriptor
docstr_tok: ["PhantomOutput","-","Dispatch","Failure",",","Bad","Descriptor"]
code: def test_dispatch_bad_descriptor(self, log_error_mock):
      """PhantomOutput - Dispatch Failure, Bad Descriptor"""
      assert_false(
          self._dispatcher.dispatch(
              get_alert(), ":".join([self.SERVICE, "bad_descriptor"])
          )
      )
  
      log_error_mock.assert_called_with(
          "Failed to send alert to %s:%s",
          self.SERVICE,
          "bad_descriptor",
      )
  
file_path: streamalert/tests/unit/streamalert/alert_processor/outputs/test_phantom.py
imports: from mock import call, patch, PropertyMock, Mock, MagicMock
  from nose.tools import assert_false, assert_true
  from streamalert.alert_processor.outputs.phantom import PhantomOutput
  from tests.unit.streamalert.alert_processor.helpers import get_alert
label_desc: Use image node_id 9 for calling the TestPhantomOutput obj's underlying member method code with example usage: obj.test_dispatch_bad_descriptor(log_error_mock) without return types