小编jle*_*jle的帖子

验证方法被调用

使用Moq,我有一个非常奇怪的问题,如果我设置的方法是公共的,模拟上的设置似乎只能工作.我不知道这是一个Moq bug还是我错了(Moq的新手).以下是测试用例:

public class TestClass
{
    public string Say()
    {
        return Hello();
    }

    internal virtual string Hello()
    {
        return "";
    }
}

[TestMethod]
public void Say_WhenPublic_CallsHello()
{
    Mock<TestClass> mock = new Mock<TestClass>();
    mock.Setup(x => x.Hello()).Returns("Hello World");

    string result = mock.Object.Say();
    mock.Verify(x => x.Hello(), Times.Exactly(1));
    Assert.AreEqual("Hello World", result);     
}
Run Code Online (Sandbox Code Playgroud)

该消息失败了:

Say_WhenPublic_CallsHello失败:Moq.MockException:调用没有在仿1次进行的:X => x.Hello()在Moq.Mock.ThrowVerifyException(IProxyCall预期,表达表达,倍)...

如果我像这样公开Hello方法,则测试通过.这是什么问题?

public virtual string Hello()
{
    return "";
}
Run Code Online (Sandbox Code Playgroud)

提前致谢!

.net c# moq mocking verify

23
推荐指数
3
解决办法
3万
查看次数

美国邮政编码的正则表达式 - 但使其成为可选的

我需要一个美国邮政编码的正则表达式.我发现了很多例子,但没有一个允许邮政编码也是可选的.你看,我在非必需的输入字段上使用它,所以有效的场景是5位邮政编码,5 + 4位邮政编码,或根本没有邮政编码.这是我到目前为止所做的,但它不适用于"根本没有邮政编码"的情况:

^(\d{5}(?:\-\d{4})?)$
Run Code Online (Sandbox Code Playgroud)

regex angularjs angular

1
推荐指数
1
解决办法
356
查看次数

标签 统计

.net ×1

angular ×1

angularjs ×1

c# ×1

mocking ×1

moq ×1

regex ×1

verify ×1