Сюрьекция
Звонят. У нас в выгрузке у любого человека пол - женский. Я не поверил. Запросили дамп. В базе всё нормально. Мэ это мэ. Жо это жо. Но после всех преобразований, передачи, повторно преобразования и попадания в целевую систему ясно видно, что мэ это жо (см. на картинке на элемент "Пол").
Интересно, что с момента прошлого обмена данными прошло полгода и тогда никаких жалоб не поступало. Установочные данные (пол, фио и пр.) -измениться не могли. Это база, на которой строится всё остальное. Смотрим в код:
[XmlIgnore]
public string SexToString
{
get {return SubjectInfo.SexToString;}
set {;}
}
Видно, что[XmlIgnore]
- это раз. Два, которое видно, находилось в xslt:<Пол>
<xsl:variable name = "sex" select = "SexToString" />
<xsl:choose>
<xsl:when test="$sex = 'Муж'">1</xsl:when>
<xsl:when test="$sex = 'Жен'">2</xsl:when>
<xsl:otherwise>2</xsl:otherwise>
</xsl:choose>
</Пол>
И теперь понятно, почему всегда прёт двойка. Остался сущий пустяк: вместо SexToString использовать Sex путём замены части xslt, отвечающую за пол.<Пол>
<xsl:variable name = "sex" select = "Sex" />
<xsl:choose>
<xsl:when test="$sex = 'Male'">1</xsl:when>
<xsl:when test="$sex = 'Female'">2</xsl:when>
<xsl:otherwise>0</xsl:otherwise>
</xsl:choose>
</Пол>
Male и Female - значения перечисления Sex, ну а 0 - для разнообразия. Если опять где кран сорвёт, будет у них не мэ, не жо, а 0. Кстати, хорошее диагностическое значение.
2 комментария:
а как такое unit тесты пропустили?
Какое-"такое"?
Юнит-тесты межкомпонентного взаимодействия очень дорого стоят, а толку от них нет.
Отправить комментарий