相关疑难解决方法(0)

Moq中Verifiable()的目的是什么?

目的是Verifiable()什么?

如果我验证Mock并将其保留,它仍会验证SetUp.

编辑:我正在使用VerifyAll()因此验证一切的原因.更改为Verify()只有我的.Verifiable() SetUps被检查.

moq

115
推荐指数
2
解决办法
4万
查看次数

Moq:指定返回值作为期望的一部分

我是Moq的新手并且正在学习.

我需要测试一个方法返回预期的值.我已经整理了一个例子来解释我的问题.这失败了:

"ArgumentException:Expression不是方法调用:c =>(c.DoSomething("Jo","Blog",1)="OK")"

你能纠正我做错的事吗?

[TestFixtureAttribute, CategoryAttribute("Customer")]
public class Can_test_a_customer
{
    [TestAttribute]
    public void Can_do_something()
    {
        var customerMock = new Mock<ICustomer>();

        customerMock.Setup(c => c.DoSomething("Jo", "Blog", 1)).Returns("OK");

        customerMock.Verify(c => c.DoSomething("Jo", "Blog", 1)=="OK");
    }
}

public interface ICustomer
{
    string DoSomething(string name, string surname, int age);
}

public class Customer : ICustomer
{
    public string DoSomething(string name, string surname, int age)
    {
        return "OK";
    }
}
Run Code Online (Sandbox Code Playgroud)

简而言之:如果我想测试一个像上面那样的方法,并且我知道我期待回到"OK",我将如何使用Moq编写它?

谢谢你的任何建议.

moq

17
推荐指数
2
解决办法
2万
查看次数

测试ClassA中的方法是否已从ClassA中的另一个方法调用

可以测试是否已使用Moq和依赖注入调用方法.但是,是否可以测试类中的一个方法是否在同一个类中调用另一个方法?

例如,我想测试一下,如果我记录某个异常,那么也会记录一条信息消息.

方法是:

public void Error(string message, Exception exception, long logId = 0)
{
    var int32 = (int)logId;
    Info("Id was converted to an int so that it would fit in the log: " + logId, int32);
    Error(message, exception, int32);
}
Run Code Online (Sandbox Code Playgroud)

这是我尝试进行单元测试.测试失败了,有什么办法可以做到吗?

void logging_an_error_with_a_long_id_also_logs_info()
{
    var mock = new Mock<ILogger>();
    var testedClass = new Logger();
    var counter = 0;

    testedClass.Error("test" + counter++, new Exception("test" + counter), Int64.MaxValue);

    mock.Verify(m => m.Info(It.IsAny<string>(), It.IsAny<int>()));
}
Run Code Online (Sandbox Code Playgroud)

由于InfoError方法属于同一个类(ClassA),我不相信我可以将ClassA作为依赖项传递给ClassA.那么它不需要测试吗?

c# unit-testing moq

6
推荐指数
2
解决办法
594
查看次数

标签 统计

moq ×3

c# ×1

unit-testing ×1