【问题标题】:How to create unit tests with Windows 8 metro applications that queries Twitter API (by linqtotwitter nuGet)如何使用查询 Twitter API 的 Windows 8 Metro 应用程序创建单元测试(来自 linqtotwitter nuGet)
【发布时间】:2013-03-04 02:31:53
【问题描述】:

我正在 Windows 8 中开发一个通过 linqtotwitter nuGet 查询 Twitter API 的应用程序。 所以,我有一些函数,如getFollowers()getFollowing()getScreenName()getUserInformation()。 我的所有函数都在查询 Twitter,我不知道如何使用这些函数创建单元测试。

谁能给我一个例子?

例如我的 getFollowers() 函数:

 public List<string> RecupererFollower()
    {
        _log.Info("Fonction récupérer follower");
        _log.Info("On recherche les follower de "+MainPage.texte);
        _log.Info("Cette fonction va créer une liste des id des follower de"+MainPage.texte);

        List<string> idFollowers=new List<string>();
        var followers =
            (from follower in MainPage.twitterCtxProp.SocialGraph
             where follower.Type == SocialGraphType.Followers &&
                   follower.ScreenName == MainPage.texte 
             select follower)
             .ToList();
        idFollowers = followers[0].IDs;

        return idFollowers;

    }

如何使用它创建测试? 什么是模拟对象?

谢谢

【问题讨论】:

    标签: c# api unit-testing twitter windows-8


    【解决方案1】:

    我会看看您正在使用的 Twitter API 是否实现了一个接口(它可能实现了)。如果是这样,那么您应该能够模拟该连接并测试您的代码是否符合您的预期,然后它使用预期参数调用 API 方法。

    Mock objects 本质上是一种将被测代码与更复杂或运行缓慢的代码或连接到另一个系统(如数据库,在本例中为 twitter)的代码断开连接的方法。

    如果您不熟悉模拟框架,请查看以下任一建议框架的文档:RhinoMocksMoq。就个人而言,我更喜欢 Rhino,并且发现它有更好的文档。但是有很多选择。

    对于上面的示例,您可以使用类似以下内容“模拟”对 twitter API 的调用,然后您的代码将使用您提供的结果,就好像它调用了 twitter。

    mockTwitterAPI.Setup(x => x.SocialGraph).Returns(MyCustomDataForThisTest());
    

    【讨论】:

    • 我无法安装这些 nuGet,因为与 .net 4.5 Framework 不兼容...
    • 您可以下载其中任何一个并直接引用二进制文件。在这两种情况下,它只是一个参考。虽然我不确定为什么 nuget 不允许你安装它们——我在 4.5 项目中使用它们。
    猜你喜欢
    • 2013-02-14
    • 1970-01-01
    • 1970-01-01
    • 2014-04-05
    • 1970-01-01
    • 2012-08-10
    • 1970-01-01
    • 1970-01-01
    • 2012-04-26
    相关资源
    最近更新 更多