我有以下
ProjectA - 我正在创建一个帮助方法来接受wsdl生成的类型(.csproj基于.NET 2.0,因为它必须是我们的遗留代码)
ProjectAIntegrationTests (。csproj基于.NET 4.5)
我已经将WCF服务的服务引用添加到两个项目中以便使用它,因为我想在projectA中创建一个我的Integration测试将测试的帮助器方法。我打算发一个
示例:
ProjectA - 包含一个帮助方法,允许我发送请求并获得回复
我发送的类型是该类型的代理实例,或者至少我的意图是如何执行此操作。
using OurCompany.SomeAppName1.Payment.Integration.Tests.PaymentService
namespace EventInventory.TicketPoint.Payment
{
public static class HttpClientHelper
{
public static PreAuthorizeResponse SendHttpRequest(PreAuthorizeRequest authorizationRequest)
{
PreAuthorizeResponse response;
var service = new PaymentService.PaymentService();
response = service.PreAuthorize(authorizationRequest);
return response;
}
}
}
ProjectAIntegrationTests - 来自
的相关集成测试using System;
using OurCompany.SomeAppName1.Payment.PaymentService;
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace OurCompany.SomeAppName1.Payment.Integration.Tests
{
[TestClass]
public class HttpClientHelperTests
{
...
[TestMethod]
public void SendRequest_PreAuthorizatoinWithMinimumValues_ReturnsAuthorizationRespones()
{
// Arrange
PaymentsClient serviceClient = new PaymentsClient(); // proxy client from wsdl
... more code
var preAuthorizeRequest = CreatePreAuthorizeRequest(transactionData, _merchantReference, _securityToken);
// Act
PreAuthorizeResponse preAuthorizeResponse = HttpClientHelper.SendHttpRequest(preAuthorizeRequest);
// Assert
}
我得到的错误是它没有识别我发送到HttpClientHelper.SendHttpReques()的PreAuthorizationRequest实例,说下面的内容:"OurCompany.SomeAppName1.Payment.Integration.Tests.PaymentService.PreAuthorizationRequest is not assignable to OurCompany.SomeAppName1.Payment.PaymentService.PreAuthorizationRequest"
因此类型不兼容。
根据.NET , OurCompany.SomeAppName1.Payment.Integration.Tests.PaymentService.PreAuthorizationRequest
不是OurCompany.SomeAppName1.Payment.PaymentService.PreAuthorizationRequest
请注意,我唯一可以解决的不同是服务背后的命名空间。我不知道这是否重要,但感觉可能是问题,不确定。如果这是真的那么你不能跨项目共享客户端代理类型?每个项目都有自己的特定于该项目的命名空间。我的第二个项目在命名空间中有Integration.Tests。
也许这是一个跨界的东西也会起作用?
答案 0 :(得分:0)
尝试将您的代理类视为完全不同的类。即使两个类具有相同的名称且相同(因为它们是从相同的wsdl生成),但这并不意味着您可以使用namespace1.ServiceClient类型的对象,其中需要namespace2.ServiceClient。
通常,一旦将ProjectA的引用添加到ProjectAIntegrationTests,您就可以在ProjectAIntegrationTests中使用服务引用生成的代码。您无需在ProjectAIntegrationTests项目中添加新的服务引用。
您还需要在ProjectAIntegrationTests上添加App.Config,并在其中添加访问该服务所需的配置(您可以从ProjectA复制必要的配置)。