class_docstr: Tests for integration with the PassthruQNode
docstr: Test that jacobian of a QNode with an attached default.mixed device with JAX
  gives the correct result with respect to the parameter-shift method
code: def test_backprop_jacobian_agrees_parameter_shift(
      self, jacobian_fn, decorator, tol
  ):
      """Test that jacobian of a QNode with an attached default.mixed device with JAX
      gives the correct result with respect to the parameter-shift method
      """
      p = pnp.array([0.43316321, 0.2162158, 0.75110998, 0.94714242])
      p_jax = jnp.array(p)
  
      def circuit(x):
          for i in range(0, len(p), 2):
              qml.RX(x[i], wires=0)
              qml.RY(x[i + 1], wires=1)
          for i in range(2):
              qml.CNOT(wires=[i, i + 1])
          return qml.expval(qml.PauliZ(0)), qml.var(qml.PauliZ(1))
  
      dev1 = qml.device("default.mixed", wires=3)
      dev2 = qml.device("default.mixed", wires=3)
  
      circuit1 = qml.QNode(
          circuit, dev1, diff_method="backprop", interface="jax"
      )
      circuit2 = qml.QNode(
          circuit, dev2, diff_method="parameter-shift", interface="jax"
      )
  
      res = decorator(circuit1)(p_jax)
      assert np.allclose(res, circuit2(p), atol=tol, rtol=0)
  
      assert circuit1.gradient_fn == "backprop"
      assert circuit2.gradient_fn is qml.gradients.param_shift
  
      res = decorator(jacobian_fn(circuit1, 0))(p_jax)
      assert np.allclose(
          res, jax.jacobian(circuit2)(p), atol=tol, rtol=0
      )
  
imports: from functools import partial
  import pytest
  import numpy
  import pennylane
  from pennylane import numpy
  from pennylane.devices.default_mixed import DefaultMixed
label_desc: Use image node_id 3 for calling the TestPassthruIntegration obj's underlying member method code with example usage: obj.test_backprop_jacobian_agrees_parameter_shift(jacobian_fn, decorator, tol) and returns: qml,  qml