Bonjour,

je suis actuellement en train de me pencher sur la manière de faire des test unitaires sur mes pages asp.net. J'ai trouvé un début de méthode mais j'aurais voulu avoir votre retour d’expérience pour savoir si j'étais dans la bonne voie ou si il y avait d'autres façons de procéder.

Mon Control ressemble a cela :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
public partial class MonWebControl : WebControlSecurise
{
   IMonService MonService;
   public MonWebControl (IMonService monservice)
  {...}
 
 
  public IFiltreGenerique GetFilterFromInterface()
  {
    //ma méthode à tester...
  }
}
et mon test unitaire à cela:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
[TestClass]
public class MonWebControlTest : MonWebControl 
{
   public MonWebControlTest(IMonService monservice):base(monservice)
   {
       this.C_DDL_DateFin = new DropDownList();
   }
 
    [TestMethod]
   public void GetFilterFromInterfaceTest()
   {
    //Arrange
            Mock<IMonService> service= new Mock<IMonService>();
            IFiltreGenerique filtre = new FiltreGenerique () {
                DateFin = DateTime.Parse("01/01/2001"),
            };
    MonWebControlTest webcontrol= new MonWebControlTest (service.Object);
    webcontrol.C_DDL_DateFin.SelectedValue= "01/01/2001";
 
    //act
    IFiltreGenerique actual =webcontrol.GetFilterFromInterface();
 
    //assert
    Assert.AreEqual(filtre.DateFin , actual.DateFin );
   }
}
En fait je fais hériter ma classe de test de mon webcontrol, cela me permet d’accéder aux contrôles et de les instancier dans le constructeur. Ensuite, je peut leur assigner une valeur dans mon test, et lancer la méthode que je veux tester.

Ici la méthode doit lire la valeur d'un contrôle et renvoyer un objet filtre avec la bonne valeur. Je dois donc tester ma valeur ensuite dans l'assert pour voir si mon test a réussi.

Cela me semble pas trop mal comme approche, mais je me demande si il n'y a pas des raccourcis que je pourrais prendre comme par exemple pour instancier les contrôles de mon webcontrol, ou encore d'autres choses auxquelles je n'aurais pas pensé.

Merci d'avance de vos lumières,