【问题标题】:How to make TypeMock Ignore All MessageBox如何使 TypeMock 忽略所有消息框
【发布时间】:2012-03-23 18:52:28
【问题描述】:

我有一个烦人的方法,它会弹出一个 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);
    }

这不会编译。因为

MessageBox.Show()

需要一个字符串参数。所以我想知道是否可以始终指定忽略调用,无论参数是什么?

我不知道会显示的确切字符串。

非常感谢!

【问题讨论】:

    标签: c# unit-testing typemock


    【解决方案1】:

    试试

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

    那应该忽略所有MessageBox.Show()

    【讨论】:

    • 我不是 100% 确定,但我认为您需要返回一个带有 WillReturn(DialogResult.OK) 的值(或任何您想要返回的值)而不是 IgnoreCall
    • @vcsjones 我没有经常使用 typemock 但我想我会发布一个答案,因为没有任何答案。你为什么不发布一个答案,我会删除我的(或只是编辑我的答案)?
    • I have not used type mock much我在同一条船上。
    • 这工作得很好。 Isolate.WhenCalled(() =&gt; MessageBox.Show(null)).WillReturn(DialogResult.OK);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多