微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

用Moq模拟继承的类

如何解决用Moq模拟继承的类

| 我有一些要为其编写单元测试的Web API方法。他们需要数据库访问权限,因此,自然地,我想起那一部分。 可通过接口访问存储类,而实现API方法的类将继承该接口。我不知道如何模拟单元测试中的继承接口。
public class CreateWishList : APIAccess
{
    public long CreateWishListV1(long userId,string wishListName)
    {
        // Do stuff like
        long result = Storage.CreateWishList(userId,wishListName);

        return result;
    }
}

public class APIAccess
{
    protected IStorage Storage { get; private set; }

    public APIAccess() : this(new APIStorage()) { }

    public APIAccess(IStorage storage)
    {
        Storage = storage;
    }
}

public interface IStorage
{
    long CreateWishList(long userId,string wishListName);
}
因此,我想对
CreateWishListV1(...)
方法进行单元测试,并且要在没有数据库访问的情况下进行测试,我需要模拟
Storage.CreateWishList(...)
返回的内容。我怎么做? 更新: 我正在尝试这样的事情:
[Test]
public void CreateWishListtest()
{
    var mockAccess = new Mock<APIAccess>(MockBehavior.Strict);
    mockAccess.Setup(m => m.Device.CreateWishList(It.IsAny<long>(),It.IsAny<string>())).Returns(123);

    var method = new CreateWishList();
    method.Storage = mockAccess.Object;

    long response = method.CreateWishListV1(12345,\"test\");

    Assert.IsTrue(response == 123,\"WishList wasn\'t created.\");
}
还必须将
APIAccess
上的
Storage
属性更改为公开。

解决方法

从我的头顶上:
var storage = new Mock<IStorage>();
storage.Setup(x => x.CreateWishList(It.IsAny<long>(),It.IsAny<string>())
       .Returns(10);
然后用自己的接受
IStorage
的构造函数创建
CreateWishList
对象。
var createWishList = new CreateWishList(storage.Object);  
要对您的“ 10”方法进行单元测试,您需要编写一个单独的测试。该测试仅应检查ѭ11中的代码。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?