集成测试ServiceSecurityContext需要假冒策略

时间:2012-12-03 22:00:40

标签: wcf unit-testing authentication mocking basic-authentication

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

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

var userName = ServiceSecurityContext.Current.PrimaryIdentity.Name;

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

任何人都可以推荐一种模拟/存根上下文的方法,这样身份验证才有效吗?

感谢。

1 个答案:

答案 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 );