I ont une classe qui ressemble à ceci:tests unitaires et exécuter en direct donnant différents parse XML résultats
Public Class TestResult
Public Sub New(labelName As String, correctValues As List(Of Object))
Me.LabelName = labelName
Me.SelectedValues = correctValues
End Sub
Public Sub New()
End Sub
Public Property LabelName As String
Public Property SelectedValues As List(Of Object)
End Class
Je suis en train d'analyser XML dans un List(Of TestResult)
. Le fait est que, selon le type d'exécution (test ou live), j'obtiens des résultats différents à chaque fois. Avec la course en direct me donnant les résultats attendus.
Voici la fonction qui analyse le XML dans un List(Of TestResult)
Public Function ReturnTestValidResults(testID As String) As IEnumerable(Of TestResult) Implements ITestManager.ReturnTestValidResults
Dim testValidResults = ReturnSingleRepComplianceFieldViaTestID("TestValidResults", testID)
Dim serializer = New XmlSerializer(GetType(List(Of TestResult)))
Dim result As List(Of TestResult)
Using reader = New StringReader(testValidResults)
result = serializer.Deserialize(reader)
End Using
Return result
End Function
Voici le XML:
<ArrayOfTestResult xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<TestResult>
<LabelName>Question1Label</LabelName>
<SelectedValues>
<anyType xsi:type="xsd:int">2</anyType>
</SelectedValues>
</TestResult>
<TestResult>
<LabelName>Question2Label</LabelName>
<SelectedValues>
<anyType xsi:type="xsd:int">2</anyType>
</SelectedValues>
</TestResult>
<TestResult>
<LabelName>Question3Label</LabelName>
<SelectedValues>
<anyType xsi:type="xsd:int">3</anyType>
</SelectedValues>
</TestResult>
<TestResult>
<LabelName>Question4Label</LabelName>
<SelectedValues>
<anyType xsi:type="xsd:boolean">true</anyType>
</SelectedValues>
</TestResult>
</ArrayOfTestResult>
Lors de l'exécution du code à partir d'un test unitaire il exact Parsis dans le List(Of TestResult)
Mais la propriété SelectedValues
contient une liste du type XML et de la valeur. Alors que vivre est juste la valeur.
Voici un exemple:
résultat du test unitaire:
{Attribute, Name="xsi:type", Value="xsd:Int"}
{Text, Value="2"}
en direct:
{2}
La seule chose que je pourrais peut-être pourquoi ce qui se passe est parce que j'ai eu mettre le XML dans mon test unitaire avec des guillemets doubles pour l'empêcher d'échapper la chaîne.
Voici mon code de test unitaire:
<TestMethod()> Public Async Function CheckSubmittedResults_SubmittedLabelsAreCorrect_ActionReturnsPassedJsonResult() As Task
Dim testController = New TestController(_iTestManager, _ihomeManager, _iGeneralACManager)
Dim submittedResults = New List(Of TestResult)
Dim validResults = New List(Of TestResult)
submittedResults.Add(New TestResult("Question1Label", New List(Of Object)() From {2}))
submittedResults.Add(New TestResult("Question2Label", New List(Of Object)() From {2}))
submittedResults.Add(New TestResult("Question3Label", New List(Of Object)() From {3}))
submittedResults.Add(New TestResult("Question4Label", New List(Of Object)() From {True}))
#Region "HugeXMLString"
Dim testResults = $"<ArrayOfTestResult xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema""><TestResult><LabelName>Question1Label</LabelName><SelectedValues><anyType xsi:type=""xsd:Int"">2</anyType></SelectedValues></TestResult><TestResult><LabelName>Question2Label</LabelName><SelectedValues><anyType xsi:type=""xsd: Int"">2</anyType></SelectedValues></TestResult><TestResult><LabelName>Question3Label</LabelName><SelectedValues><anyType xsi:type=""xsd: Int"">3</anyType></SelectedValues></TestResult><TestResult><LabelName>Question4Label</LabelName><SelectedValues><anyType xsi:type=""xsd: Boolean"">true</anyType></SelectedValues></TestResult></ArrayOfTestResult>"
#End Region
_iTestRepository.Setup(Function(x) x.ReturnSingleRepComplianceFieldViaTestID("TestValidResults", Nothing)).Returns(testResults)
Dim result = Await testController.CompleteTest(submittedResults, Nothing)
Assert.IsTrue(result.Data.Success = True, "Action should have passed.")
Quelqu'un peut-il voir pourquoi cela se passe?