2
我正在通過NUnit將一些舊式WCF服務的現有集成測試轉換爲自動化。當前的測試調用WCF服務的部署版本;我想要做的是讓測試直接/內部地打到服務類(MyService.svc.cs)。測試使用假冒的WCF服務
我遇到的問題是,該服務使用模擬:
//this is a method in MyService.svc.cs
public SomeObject GetSomeObject()
{
using (GetWindowsIdentity().Impersonate())
{
//do some stuff
}
return null;
}
private WindowsIdentity GetWindowsIdentity()
{
var callerWinIdentity = ServiceSecurityContext.Current.WindowsIdentity;
var cf = new ChannelFactory<IMyService>();
cf.Credentials.Windows.AllowedImpersonationLevel = TokenImpersonationLevel.Impersonation;
return callerWinIdentity;
}
的問題是,ServiceSecurityContext.Current總是空,當我把它從一個單元測試。
模擬在下游操作中很重要,所以我不能繞過這段代碼,只是調用using
塊內的內容。可能將我的測試代碼打包爲WindowsIdentity.GetCurrent().Impersonate()
和,然後調用using
塊中的內容(繞過MyService.svc.cs代碼),但這樣做可能不太理想,因爲它不是完整的端到端結束測試。
我不需要冒用不同的用戶來模仿 - 我只需要運行者的用戶上下文在ServiceSecurityContext.Current中可用。
這可能嗎?