【发布时间】:2017-11-08 22:41:39
【问题描述】:
我有一个 WebAPI2 项目,其中的控制器引用了一些其他服务,我知道一切正常,因为我已经发布了 webapi 并且可以正常工作,但是现在我想做一些单元测试。 在我最初的解决方案中,我创建了一个新的测试项目并创建了我的测试方法:
[TestMethod]
public void GetVerifyLogin_ShouldReturnUser() {
UserAccountController controller = new UserAccountController();
var result = controller.GetVerifyLogin("2171251", "2171251");
Assert.IsNotNull(result);
}
当我运行测试时,出现以下错误:
结果消息:测试方法 StagesApiMsaTest.UserAccountControllerTest.GetVerifyLogin_ShouldReturnUser 抛出异常:System.InvalidOperationException:找不到 引用合约的默认端点元素 ServiceModel 客户端中的“RapidFunctionsService.R_Service” 配置部分。这可能是因为没有配置文件 为您的应用程序找到,或者因为没有匹配的端点元素 该合同可以在客户端元素中找到。
我正在测试的方法有几行代码,但我将提取该方法:
foreach (var siteItem in siteResult.ResultSet)
{
result.SiteNum = siteItem.SiteNum;
result.DevNum = siteItem.DevNum;
result.TrasmitterCode = siteItem.TransmitterCode;
}
RapidFunctionsService.R_ServiceClient service = new RapidFunctionsService.R_ServiceClient();
RapidFunctionsService.ZipCodeVerifyDealerResult xipResult = service.ZipCodeVerifyForXmit(result.TrasmitterCode);
result.ZipCodeVerify = xipResult.ZipCodeVerifyDealer;
result.ZipCode = xipResult.ZipCode;
任何人都知道为什么我在测试中遇到此错误?
【问题讨论】:
-
被测方法与在实际运行环境之外似乎不起作用的实现问题紧密耦合。封装这些依赖项,以便可以模拟它们以允许单独对代码进行单元测试。
-
还应调查错误消息的最后几行。您是否缺少测试项目中应该存在的配置信息。
-
我不太确定测试项目中是否需要任何配置文件,因为测试项目在同一个解决方案下,并且引用了默认的webapi项目
-
测试项目在自己的上下文中执行,需要自己的配置文件
-
好的,我知道了,让我试试,所以我需要在我的测试项目上创建一个 app.config 并引用我的服务?
标签: c# unit-testing asp.net-web-api