Faire de la MvcContrib de testhelper avec des actions qui obtiennent des données d'itinéraire automapped aux objets

StackOverflow https://stackoverflow.com/questions/2161741

Question

est ASP.NET MVC v1 (ne pas utiliser la v2 encore)

J'ai une entrée de route comme ceci:

            routes.MapRoute(
            "Srp",
            "soeg-{searchQuery}/{listingType}",
            new { controller = "Srp", action = "Search", listingType = string.Empty },
            new { listingType = "privat|forhandler|"}
            );

et une action pour le match:

        public ActionResult Search(QueryParameters queryParameters)

Il fonctionne parfaitement - le cadre mvc sait cartographier la searchQuery et listingType sur les deux propriétés de l'objet QueryParameters avec les mêmes noms

.

Mon problème est les tests unitaires. J'utilise projet MvcContrib et AIMER la méthode ShouldMapTo:

        [Test]
    public void RegisterSrpRoutes_SoegWithKeywordAndValidListingType_ShouldMapCorrectly()
    {
        var queryParameters = new QueryParameters {SearchQuery = "hest", ListingType = "privat"};
        "~/soeg-hest/privat".ShouldMapTo<SrpController>(controller => controller.Search(queryParameters));
    }

Il ne fonctionne pas bien! Je l'habitude d'avoir des paramètres spécifiques sur mon action comme ceci:

        public ActionResult Search(string searchQuery, string listingType)

qui a travaillé (évidemment unittest essaierait de carte pour rechercher avec deux paramètres (chaînes) au lieu de celui-objet.

Est-ce que quelqu'un a une idée de la façon de résoudre le problème, à court de retourner à l'écriture de toutes les propriétés en tant que paramètres. Le AutoMapping mvc des roches propriétés, mais j'espère qu'il ya une certaine façon je peux avoir mvccontribs testhelper travailler avec aussi.

Était-ce utile?

La solution

Il a été un moment que je regardais ce code, mais je crois qu'il ne Equals un appel sur le paramètre que vous envoyez. Pour les types primitifs cela est facile, mais pour vous objet de paramètre, essayez de mettre en œuvre les Equals passer outre et avoir tester l'égalité de chacune des propriétés.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top