我有一个使用HTTP + SSL进行身份验证的WCF服务。我现在正在编写实例化服务类并进行调用的集成测试(Visual Studio 2012单元测试项目)。
问题出现在WCF服务方法的第一行:
var userName = ServiceSecurityContext.Current.PrimaryIdentity.Name;
因为单元测试项目没有通过HTTP进行调用。
任何人都可以推荐一种模拟/存根上下文的方法,这样身份验证才有效吗?
感谢。
答案 0 :(得分: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 );