当前位置:  开发笔记 > 编程语言 > 正文

如何对OData客户端进行单元测试?

如何解决《如何对OData客户端进行单元测试?》经验,为你挑选了1个好方法。



1> Old Fox..:

C'tor DataServiceQuery是私人的,因此我不能用它来嘲笑它Moq.

我使用MsFakes作为免费的代码编织工具来解决这个问题:

[TestMethod]
public void LevelsVMConstructorTest()
{
    using (ShimsContext.Create())
    {
        List levels = new List();
        levels.Add(new Level() { Id = 1, LevelId = 1, Name = "abc", IsRoot = true });
        var levelsIQ = levels.AsQueryable();

        var fakeDataServiceQuery = new System.Data.Services.Client.Fakes.ShimDataServiceQuery();

        fakeDataServiceQuery.ProviderGet = () => levelsIQ.Provider;
        fakeDataServiceQuery.ExpressionGet = () => levelsIQ.Expression;
        fakeDataServiceQuery.ElementTypeGet = () => levelsIQ.ElementType;
        fakeDataServiceQuery.GetEnumerator = levelsIQ.GetEnumerator;

        var defaultContainerMock = new Mock();
        defaultContainerMock.Setup(m => m.Levels).Returns(fakeDataServiceQuery);

        LevelViewer lv = new LevelViewer(odataContainerMock.Object);
        Assert.IsTrue(lv.GetRootLevels().Any());

   }
}

推荐阅读
无名有名我无名_593
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有