Pour créer un UrlHelper
, vous avez besoin d'un RequestContext
. Afin de créer un fonctionnement RequestContext
, vous avez besoin d'un HttpContextBase
et un RouteData
. La seconde, RouteData
, devrait être simple à construire. Le HttpContextBase
, vous devez vous moquer.
Pour cela, je vous suggère de regarder MvcMockHelpers de Scott H. Certaines parties sont un peu anciennes, mais je pense que c'est assez bon pour ce test particulier - tout ce dont vous avez vraiment besoin est la méthode FakeHttpContext
et ses dépendances. Si vous allez chercher cette bibliothèque, votre code ressemblerait à quelque chose comme:
[TestMethod]
public void Can_write_more_floorplans()
{
const long productID = 12345;
const int pageIndex = 10;
var httpContext = FakeHttpContext(); // From the MvcMockHelpers
var routeData = new RouteData();
var requestContext = new RequestContext(httpContext, routeData);
var urlHelper = new UrlHelper(requestContext);
string floorplans = MoreFloorplans(urlHelper, productID, pageIndex);
Assert.AreEqual(some_string, floorplans);
}
Je sais que vous dites que vous essayez d'utiliser le projet MvcContrib TestHelper
, mais pour autant que je sache, cette bibliothèque est tout au sujet des tests contrôleurs. Je ne suis pas sûr que ce soit assez granulaire pour tester un composant de niveau inférieur. Vous n'avez pas vraiment besoin de tout ce qu'il y a dedans de toute façon; tout ce dont vous avez besoin est un RequestContext
.
merci, je vais essayer ça – fregas