如何伪造html内容来单元测试一个方法

时间:2012-03-20 16:48:12

标签: c# unit-testing

我写了一个c#解决方案。

我想为两个类编写单元测试:

HtmlAgilityPackHtmlProviderHtmlContentManager

代码可以从以下网址下载:http://ge.tt/7lDhlFF

但未能编写最简单的测试。

我不确定如何伪造Html内容并验证其结果。

我试过了:

  [TestClass]
    public class HtmlContentManagerUT
    {

        ////no need, only wrapper
        //[TestMethod]
        //public void GetRootContentAsByteArray_GoogleAsInput_NoException()
        //{
        //   IHtmlProvider htmlProvider = new HtmlAgilityPackHtmlProvider();
        //   var rootContentAsByteArray = htmlProvider.GetRootContentAsByteArray("https://www.google.com/");
        //   Assert.IsTrue(RootContentAsByteArray.SequenceEqual());
        //}


        [TestMethod]
        public void GetRootContentAsByteArray_GoogleAsInput_NoException()
        {
            IHtmlProvider htmlProvider = new HtmlAgilityPackHtmlProvider();
            var externalCss = htmlProvider.GetExternalCss();
            Assert.IsTrue(externalCss.SequenceEqual());
        }
    }

如果我应该在stackoverflow代码审查中发布 -

请发表评论,我将删除当前的帖子。

1 个答案:

答案 0 :(得分:0)

你应该看一下这些技巧:

Dependency_injection

Mock_object

但我真的不明白你想做什么。您是否尝试对下载的代码进行单元测试?如果是这样,你不应该这样做。您应该只关心您创建的代码。如果您的代码使用某些第三方API,则应将其封装在您自己的类中并对其进行单元测试。

如果没有尝试测试第三方API,您必须首先知道需要测试的内容以及不需要测试的内容。当你有像HTMLProviders这样的类时,在某些情况下测试它会更有意义,例如测试将使用它的业务代码。除非您正在开发API,否则您应该只关心业务逻辑中有意义的内容。

但我们需要更多信息来帮助您。