Никакие опции не потребовали
Regex:
\w+|"[\w\s]*"
C#:
Regex regex = new Regex(@"\w+|""[\w\s]*""");
Или если необходимо исключить "символы:
Regex
.Matches(input, @"(?<match>\w+)|\""(?<match>[\w\s]*)""")
.Cast<Match>()
.Select(m => m.Groups["match"].Value)
.ToList()
.ForEach(s => Console.WriteLine(s));
Я ни в коем случае не эксперт по модульным тестам, просто промочу ноги в этой области.
Разве не излишне имитировать Identity в модульном тесте, потому что код Identity - это код, который, как вы можете предположить, работает уже изолированно? (т.е. это код Microsoft?) Например, при модульном тестировании вашего собственного кода вам не нужно имитировать один из объектов Framework. Я имею в виду, вам когда-нибудь понадобится издеваться над списком или словарем?
При этом, если вы ДЕЙСТВИТЕЛЬНО хотите протестировать свой код изолированно или по какой-то причине иметь супертонкий контроль над данными, возвращаемыми в Userdata, вы не можете вы просто пишете интерфейс для взаимодействия между идентификатором и вашим кодом?
Public Interface IIdentityUserData
Readonly Property UserData As String
End Interface
Public Class RealIdentityWrapper
Implements IIdentityUserData
Private _identity as FormsIdentity
Public Sub New(identity as FormsIdentity)
'the real version takes in the actual forms identity object
_identity = identity
End Sub
Readonly Property UserData As String Implements IIDentityUserData.UserData
If not _identity is nothing then
Return _identity.Ticket.UserData
End If
End Property
End Class
'FAKE CLASS...use this instead of Mock
Public Class FakeIdentityWrapper
Implements IIdentityUserData
Readonly Property UserData As String Implements IIDentityUserData.UserData
If not _identity is nothing then
Return "whatever string you want"
End If
End Property
End Class
'here's the code that you're trying to test...modified slightly
Dim fIdentity As FormsIdentity= HttpContext.Current.User.Identity
Dim identityUserData As IIdentityUserData
identityUserData =
'TODO: Either the Real or Fake implementation. If testing, inject the Fake implementation. If in production, inject the Real implementation
Dim userData as String
userData = identityUserData.UserData
Надеюсь, это поможет