def METHOD_NAME(self):
    # create discretisation
    mesh = get_p2d_mesh_for_testing()
    spatial_methods = {
        "macroscale": pybamm.FiniteVolume(),
        "negative particle": pybamm.FiniteVolume(),
        "positive particle": pybamm.FiniteVolume(),
    }
    disc = pybamm.Discretisation(mesh, spatial_methods)
    # add ghost nodes
    c_s_n = pybamm.Variable(
        "c_s_n",
        domain=["negative particle"],
        auxiliary_domains={"secondary": "negative electrode"},
    )
    c_s_p = pybamm.Variable(
        "c_s_p",
        domain=["positive particle"],
        auxiliary_domains={"secondary": "positive electrode"},
    )
    disc.set_variable_slices([c_s_n])
    disc_c_s_n = pybamm.StateVector(*disc.y_slices[c_s_n])
    disc.set_variable_slices([c_s_p])
    disc_c_s_p = pybamm.StateVector(*disc.y_slices[c_s_p])
    bcs = {
        "left": (pybamm.Scalar(0), "Dirichlet"),
        "right": (pybamm.Scalar(3), "Dirichlet"),
    }
    sp_meth = pybamm.FiniteVolume()
    sp_meth.build(mesh)
    c_s_n_plus_ghost, _ = sp_meth.add_ghost_nodes(c_s_n, disc_c_s_n, bcs)
    c_s_p_plus_ghost, _ = sp_meth.add_ghost_nodes(c_s_p, disc_c_s_p, bcs)
    mesh_s_n = mesh["negative particle"]
    mesh_s_p = mesh["positive particle"]
    n_prim_pts = mesh_s_n.npts
    n_sec_pts = mesh["negative electrode"].npts
    p_prim_pts = mesh_s_p.npts
    p_sec_pts = mesh["positive electrode"].npts
    y_s_n_test = np.kron(np.ones(n_sec_pts), np.ones(n_prim_pts))
    y_s_p_test = np.kron(np.ones(p_sec_pts), np.ones(p_prim_pts))
    # evaluate with and without ghost points
    c_s_n_eval = disc_c_s_n.evaluate(None, y_s_n_test)
    c_s_n_ghost_eval = c_s_n_plus_ghost.evaluate(None, y_s_n_test)
    c_s_p_eval = disc_c_s_p.evaluate(None, y_s_p_test)
    c_s_p_ghost_eval = c_s_p_plus_ghost.evaluate(None, y_s_p_test)
    # reshape to make easy to deal with
    c_s_n_eval = np.reshape(c_s_n_eval, [n_sec_pts, n_prim_pts])
    c_s_n_ghost_eval = np.reshape(c_s_n_ghost_eval, [n_sec_pts, n_prim_pts + 2])
    c_s_p_eval = np.reshape(c_s_p_eval, [p_sec_pts, p_prim_pts])
    c_s_p_ghost_eval = np.reshape(c_s_p_ghost_eval, [p_sec_pts, p_prim_pts + 2])
    np.testing.assert_array_equal(c_s_n_ghost_eval[:, 1:-1], c_s_n_eval)
    np.testing.assert_array_equal(c_s_p_ghost_eval[:, 1:-1], c_s_p_eval)
    np.testing.assert_array_equal(
        (c_s_n_ghost_eval[:, 0] + c_s_n_ghost_eval[:, 1]) / 2, 0
    )
    np.testing.assert_array_equal(
        (c_s_p_ghost_eval[:, 0] + c_s_p_ghost_eval[:, 1]) / 2, 0
    )
    np.testing.assert_array_equal(
        (c_s_n_ghost_eval[:, -2] + c_s_n_ghost_eval[:, -1]) / 2, 3
    )
    np.testing.assert_array_equal(
        (c_s_p_ghost_eval[:, -2] + c_s_p_ghost_eval[:, -1]) / 2, 3
    )