0

我有一个使用 HTTP+SSL 进行身份验证的 WCF 服务。我现在正在编写实例化实际服务类并进行调用的集成测试(Visual Studio 2012 单元测试项目)。

问题出现在 WCF 服务方法的第一行:

var userName = ServiceSecurityContext.Current.PrimaryIdentity.Name;

因为单元测试项目没有通过 HTTP 进行调用。

任何人都可以推荐一种模拟/存根上下文以使身份验证起作用的方法吗?

谢谢。

4

1 回答 1

2

我能够与 Telerik JustMock 一起工作。我开始沿着城堡路走,但没有那么幸运。无论如何,为了未来的后代:

var username = "me";
var param1 = "oneoneone";
var param2 = @"stuffstuffstuff";
var conmock = Mock.Create<ServiceSecurityContext>( Constructor.Mocked );
var perinstance = new MyWcfService();
Mock.Arrange( () => ServiceSecurityContext.Current ).IgnoreInstance().Returns( conmock );
Mock.Arrange( () => conmock.PrimaryIdentity.Name ).Returns( username );
var something = perinstance.SubmitRequest( param1 , param2 );
Assert.AreEqual( something , somethingelse );
于 2012-12-05T19:35:58.637 回答