Spring Framework TEST Service Web RESTful (contrôleur) hors ligne, c'est-à-dire aucun serveur, aucune base de données

J'ai une question très simple Reposant Contrôleur qui consomme et produit JSON. J'ai besoin de tester le contrôleur en mode hors connexion c'est à dire pas de serveur, pas de base de données en cours d'exécution. Et je vais écrous pour ne pas être en mesure de trouver une solution. Mon intial cas de test comprennent:

  • Test RESTE Uri c'est à dire GET, POST, PUT, DELETE - je dois être en mesure de faire Valoir les données retournées contre les données envoyées.
  • Affirmer permettra de tester les données JSON

J'ai le texte suivant Uri:

  • /pcusers - Renvoie tous les utilisateurs
  • /pcusers/{id} - Retour d'un utilisateur spécifique
  • /pcusers/créer/{pcuser} - Ajouter un utilisateur pour la base de données
  • /pcusers/mise à jour/{pcuser} - mise à Jour de l'utilisateur
  • /pcusers/supprimer/{id} - Supprimer l'Utilisateur

REMARQUE: Ce n'est PAS une application MVC. Je N'ai PAS Vues. J'ai un pur REPOS contrôleur qui crache JSON et utilise des données au format JSON.

Si quelqu'un pouvait me guider dans la bonne direction serait vraiment apprécié.

Juste pour être clair comment mon code ressemble à ceci:

@Controller
@RequestMapping("/pcusers")
public class PcUserController {
    protected static Logger logger = Logger.getLogger(PcUserController.class);

    @Resource(name = "pcUserService")
    private PcUserService pcUserService;

    @RequestMapping(value = "", method = RequestMethod.GET, produces = "application/json")
    @ResponseBody
    public List<PcUser> readAll() {
        logger.debug("Delegating to service to return all PcUsers");
        return pcUserService.readAll();
    }

    @RequestMapping(value = "/{id}", method = RequestMethod.GET, consumes = "application/json", produces = "application/json")
    @ResponseBody
    public PcUser read(@PathVariable String id) {
        logger.debug("Delegating to service to return PcUser " + id);
        return pcUserService.read(id);
    }

    @RequestMapping(value = "/create/{pcUser}", method = RequestMethod.POST, consumes = "application/json", produces = "application/json")
    @ResponseBody
    public boolean create(@PathVariable PcUser pcUser) {
        logger.debug("Delegating to service to create new PcUser");
        return pcUserService.create(pcUser);
    }

    @RequestMapping(value = "/update/{pcUser}", method = RequestMethod.POST, consumes = "application/json", produces = "application/json")
    @ResponseBody
    public boolean update(@PathVariable PcUser pcUser) {
        logger.debug("Delegating to service to update existing PcUser");
        return pcUserService.update(pcUser);
    }

    @RequestMapping(value = "/delete/{id}", method = RequestMethod.POST, consumes = "application/json", produces = "application/json")
    @ResponseBody
    public boolean delete(@PathVariable String id) {
        logger.debug("Delegating to service to delete existing PcUser");
        return pcUserService.delete(id);
    }
}

Mise à JOUR (2/5/2012):
Après quelques recherches, je suis tombé sur un framework Spring appelé printemps-test-mvc. Il a l'air très prometteur et j'ai réussi à prendre un bon départ sur ce. Mais maintenant j'ai un nouveau problème. Quand je soumettre une demande GET "/pcusers/{id}", le contrôle est passé à lire méthode qui est responsable pour le traitement de cette cartographie. À l'intérieur de cette méthode, j'ai un pcUserService qui n'a lu. Maintenant, le problème est que lorsque j'exécute ce test, le pcUserService exemple à l'intérieur d'réel contrôleur est NULLE; et par conséquent, il finit par s'écraser en lecture ne peut pas être appelée sur un objet NULL.

Voici PcUserControllerTest code:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:/applicationContextTest.xml")
public class PcUserControllerTest {

    @Autowired
    PcUserService pcUserService;

    @Autowired
    PcUserController pcUserController;

    PcUser pcUser;

    @Before
    public void setUp() throws Exception {
        pcUser = new PcUser("John", "Li", "Weasley", "john", "john", new DateTime());

        pcUserService.create(pcUser);
    }

    public void tearDown() throws Exception {
        pcUserService.delete(pcUser.getId());
    }

    @Test
    public void shouldGetPcUser() throws Exception {
        standaloneSetup(pcUserController)
                .build()
                .perform(get("/pcusers/" + pcUser.getId()).accept(MediaType.APPLICATION_JSON))
                .andExpect(status().isOk());
    }
}

source d'informationauteur jsf