使用HttpCurrentContext的单元/集成测试代码

时间:2009-05-07 17:11:55

标签: c# asp.net nunit

试图让Nunit在ASP.Net中工作。

问题是,我正在测试一个自定义控件 - 它引用了一个全局资源。

当我尝试进行单元测试时

/// </summary>
        [Test]
        public void TestSetAndGetNumber()
        {
            PhoneNumber phone = new PhoneNumber(PhoneNumber.NumberType.Business, "", true, "");
            string expectedString = "1-800-Goat-Phone";
            string resultString = "1-800-Goat-Phone";
            resultString = phone.Value = resultString;
            Assert.AreEqual(expectedString, resultString, "GetNumberMatch method returned unexpected result.");
            Assert.Fail("Create or modify test(s).");
        }

我会得到“无法加载App_GlobalResources”。

试图弄清楚我是否应该尝试模拟HttpContext Using You've been Haacked blog post但是没有人确认这是可行的。

2 个答案:

答案 0 :(得分:1)

这可能听起来很滑稽,但你不能只重新设计PhoneNumber类以便它是可测试的吗?

如果你想使用单元测试,这似乎是要走的路。 如果您无法修改PhoneNumber类,那么测试它的重点是什么?

答案 1 :(得分:1)

这是一个典型的场景,您应该以正确的方式设置您的课程以便进行测试。如果你有外部依赖(对全局资源的引用),那么你应该把它作为一个抽象,所以你可以模拟它。

我建议你看看这个book,它解释了如何设计你的课程更加可测试。或者,您可以从moq下载示例。设置单元测试很多是以更松散耦合的方式设计您的类,因此您可以在不与DB / File系统/其他资源交互的情况下有效地测试它。