2017-06-28 4 views
0

J'essaie d'écrire des tests unitaires sur du code hérité en utilisant MSTest. J'ai ajouté un assemblage de fakes sur la classe que je suis en train de tester, mais il fait référence à un contrôle utilisateur et il contient du code. Je sais que ce n'est probablement pas la bonne façon d'y arriver, mais est-il possible de Shim un contrôle utilisateur? Ils n'apparaissent pas dans le ShimContext, donc je ne tiens pas trop d'espoir ..Ciblage d'un contrôle

+0

Ce qui aiderait à répondre à votre question est si vous soulignez auquel vous contrôlez faites référence - ASPX, WinForms, WPF? – zaitsman

+0

Très bon point. Doh. C'est WPF. –

Répondre

0

Je ne sais pas où vous êtes coincé.

Si je crée une nouvelle classe UserControl1 dans WPF comme ceci:

/// <summary> 
    /// Interaction logic for UserControl1.xaml 
    /// </summary> 
    public partial class UserControl1 : UserControl 
    { 
    public UserControl1() 
    { 
     InitializeComponent(); 
    } 

    public void Do() 
    { 

    } 
    } 

Ensuite, mon shim généré contient la méthode Do():

Namespace.Fakes.ShimUserControl1.AllInstances.Do = control1 => { };

Si vous voulez calez la System.Windows.Controls.UserControl réelle, référence PresentationFramework dll et génère des faux pour cela.

Ensuite, vous obtiendrez les propriétés d'instance suivantes pour attribuer (voir capture d'écran): Screenshot