0
我有一个类,它看起来像这样:单元测试和现场运行给不同的XML解析结果
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
我试图解析XML为List(Of TestResult)
。
事情是,根据执行的类型(测试或生活),我每次得到不同的结果。随着现场运行给我预期的结果。
这里是一个解析XML成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
在这里,函数的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>
当从一个单元测试运行的代码是否正确解析到List(Of TestResult)
但SelectedValues
属性包含XML类型和值的列表。而生活只是价值。
下面是一个例子:
单元测试结果:
{Attribute, Name="xsi:type", Value="xsd:Int"}
{Text, Value="2"}
直播:
{2}
我可能明白为什么出现这种情况的唯一的事情是因为我有把XML放在我的单元测试中用双引号来阻止它逃离字符串。
这里是我的单元测试代码:
<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.")
有人能看到为什么会这样?