def METHOD_NAME(self, cluster_id, steps, step_ids, error_code=None):
    expected_params = {
        'JobFlowId': cluster_id,
        'Steps': []
    }
    for step in steps:
        if step['type'] == 'emrfs':
            expected_params['Steps'].append({
                'Name': step['name'],
                'ActionOnFailure': 'CONTINUE',
                'HadoopJarStep': {
                    'Jar': 'command-runner.jar',
                    'Args': ['/usr/bin/emrfs', step['command'], step['bucket_url']]
                }
            })
        elif step['type'] == 'spark':
            expected_params['Steps'].append({
                'Name': step['name'],
                'ActionOnFailure': 'CONTINUE',
                'HadoopJarStep': {
                    'Jar': 'command-runner.jar',
                    'Args': ['spark-submit', '--deploy-mode', 'cluster',
                             step['script_uri'], *step['script_args']]
                }
            })
    response = {'StepIds': step_ids}
    self._stub_bifurcator(
        'add_job_flow_steps', expected_params, response, error_code=error_code)