code: def testPipelineWithExitHandler(self):
      pipeline = test_utils.two_step_pipeline()
      # define exit handler
      exit_handler = test_utils.dummy_exit_handler(
          param1=decorators.FinalStatusStr()
      )
  
      builder = pipeline_builder.PipelineBuilder(
          tfx_pipeline=pipeline,
          default_image="gcr.io/my-tfx:latest",
          exit_handler=exit_handler,
      )
      pipeline_spec = builder.build()
      self.assertProtoEquals(
          test_utils.get_proto_from_test_data(
              "expected_two_step_pipeline_with_exit_handler.pbtxt",
              pipeline_pb2.PipelineSpec(),
          ),
          pipeline_spec,
      )
  
imports: from kfp.pipeline_spec import pipeline_spec_pb2
  import tensorflow
  from tfx.orchestration.kubeflow import decorators
  from tfx.orchestration.kubeflow.v2 import pipeline_builder
  from tfx.orchestration.kubeflow.v2 import test_utils
label_desc: Use image node_id 13 for calling the PipelineBuilderTest obj's underlying member method code with example usage: obj.testPipelineWithExitHandler() without return types