2012-03-23 12 views
2

Ich habe diese lästige Methode, die eine MessageBox auftauchen. Also wenn ich versuche, es zu testen, möchte ich so etwas tun.Wie TypeMock Ignoriere alle MessageBox

/// <summary> 
    /// A test for LoadConfig exception 
    /// </summary> 
    [TestMethod] 
    public void LoadConfigTest1() 
    { 
     // Arrange 
     var target = new RFIDManager(); 
     Isolate.WhenCalled(() => ConfigurationManager.AppSettings[0]).WillThrow(new Exception("foo")); 
     Isolate.WhenCalled(() => MessageBox.Show()).IgnoreCall(); 

     // Act 
     var result = target.LoadConfig(); 

     // Assert 
     Assert.IsFalse(result); 
    } 

Dies wird nicht kompiliert. Denn

MessageBox.Show() 

benötigt ein String-Argument. Also ich möchte wissen, ist es möglich, immer ignorieren, egal was das Argument?

Ich weiß nicht die genaue Zeichenfolge, die angezeigt wird.

Vielen Dank!

Antwort

1

Versuchen

Isolate.WhenCalled(() => MessageBox.Show(null)).IgnoreCall(); 

, dass alle MessageBox.Show() ignorieren sollte.

+0

Ich bin nicht 100% sicher, aber ich denke, Sie müssen einen Wert mit 'WillReturn (DialogResult.OK)' (oder was auch immer Sie zurückgeben wollen) anstelle von 'IgnoreCall' zurückgeben. – vcsjones

+0

@vcsjones Ich habe nicht viel Typmock verwendet, aber ich dachte, ich würde eine Antwort posten, da es keine gab. Warum postest du keine Antwort und ich lösche meine (oder redigiere einfach meine Antwort)? –

+0

'Ich habe den Typ nicht viel gespielt 'Ich bin im selben Boot. – vcsjones