2017-06-28 5 views
0

Ich versuche, einige Komponententests auf einigen Legacy-Code mit MSTest schreiben. Ich habe eine Fake-Assembly zu der Klasse hinzugefügt, die ich gerade testet, aber sie enthält einen Verweis auf ein Benutzersteuerelement, in dem Code enthalten ist. Ich weiß, dass dies wahrscheinlich nicht der richtige Weg ist, aber ist es möglich, eine Benutzerkontrolle zu Shim? Sie erscheinen nicht im ShimContext, also halte ich nicht zu viel Hoffnung.Shimming ein Steuerelement

+0

Was würde helfen, Ihre Frage zu beantworten, wenn Sie zu welchem ​​Punkt aus steuern Sie sich beziehen - aspx, WinForms, WPF? – zaitsman

+0

Sehr guter Punkt. Do. Es ist WPF. –

Antwort

0

Ich bin mir nicht sicher, wo du stecken geblieben bist.

Wenn ich erstellen Sie eine neue Klasse UserControl1 in WPF wie so:

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

    public void Do() 
    { 

    } 
    } 

Dann meine erzeugte Shim enthält die Do() Methode:

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

Wenn Sie die tatsächliche System.Windows.Controls.UserControl Shim möchten, Referenz PresentationFramework DLL und erzeugen Fälschungen dafür.

Dann werden Sie die folgenden Eigenschaften der Instanz bekommen (siehe Screenshot) zuordnen: Screenshot

Verwandte Themen