code: def test_output_backtesting_forecaster_interval_yes_exog_yes_remainder_gap_with_mocked():
      """
      Test output of _backtesting_forecaster with backtesting mocked, interval yes.
      Regressor is LinearRegression with lags=3, Series y is mocked, exog is mocked,
      20 observations to backtest, steps=5 and gap=3, metric='mean_squared_error',
      'in_sample_residuals = True'
      """
      expected_metric = 0.0839045861490063
      expected_predictions = pd.DataFrame(
          data=np.array(
              [
                  [0.65022999, 0.27183154, 1.06503914],
                  [0.52364637, 0.19453326, 0.923044],
                  [0.46809256, 0.12440678, 0.75395058],
                  [0.48759732, 0.12107577, 0.83145059],
                  [0.47172445, 0.14533367, 0.74697552],
                  [0.54075007, 0.15924753, 1.01588603],
                  [0.50283999, 0.19115121, 0.85076388],
                  [0.49737535, 0.22956778, 0.7939908],
                  [0.49185456, 0.22055651, 0.85300844],
                  [0.48906044, 0.17652033, 0.80604025],
                  [0.27751064, -0.07159784, 0.70858646],
                  [0.25859617, -0.03545793, 0.57770947],
                  [0.32853669, 0.03467979, 0.81698814],
                  [0.43751884, 0.13949436, 0.82693778],
                  [0.33016371, 0.03065767, 0.64473596],
                  [0.58126262, 0.22355106, 1.01410171],
                  [0.52955296, 0.21810115, 0.93120556],
              ]
          ),
          columns=["pred", "lower_bound", "upper_bound"],
          index=pd.RangeIndex(start=33, stop=50, step=1),
      )
  
      forecaster = ForecasterAutoregDirect(
          regressor=LinearRegression(), lags=3, steps=8
      )
  
      n_backtest = 20
      y_train = y[:-n_backtest]
  
      metric, backtest_predictions = _backtesting_forecaster(
          forecaster=forecaster,
          y=y,
          exog=exog,
          refit=True,
          initial_train_size=len(y_train),
          fixed_train_size=False,
          gap=3,
          allow_incomplete_fold=True,
          steps=5,
          metric="mean_squared_error",
          interval=[5, 95],
          n_boot=500,
          random_state=123,
          in_sample_residuals=True,
          verbose=False,
      )
  
      assert expected_metric == approx(metric)
      pd.testing.assert_frame_equal(
          expected_predictions, backtest_predictions
      )
  
imports: import pytest
  import numpy
  import pandas
  from pytest import approx
  from sklearn.linear_model import LinearRegression
  from sklearn.linear_model import Ridge
  from sklearn.metrics import mean_squared_error
  from skforecast.ForecasterAutoreg import ForecasterAutoreg
  from skforecast.ForecasterAutoregCustom import ForecasterAutoregCustom
  from skforecast.ForecasterAutoregDirect import ForecasterAutoregDirect
  from skforecast.model_selection.model_selection import _backtesting_forecaster
  from .fixtures_model_selection import y
  from .fixtures_model_selection import exog
  from .fixtures_model_selection import out_sample_residuals
label_desc: Use image node_id 20 for calling a global function with example usage: test_output_backtesting_forecaster_interval_yes_exog_yes_remainder_gap_with_mocked() without return types