【发布时间】:2021-12-20 19:28:39
【问题描述】:
我正在尝试验证 Cypress 中的计算是否正确。
所以我有一个 NextJS 应用程序,它使用 Material UI 并将以下标记呈现为:
<ul data-cy="patientLogList">
<li>
<section>
<h3 class="MuiTypography-root">Symptom Score 1</h3>
<p class="MuiTypography-root">
<section>
<h3 class="MuiTypography-root">Wheezing</h3>
<p class="MuiTypography-root">Very Mild</p>
</section>
</p>
</section>
</li>
</ul>
所以症状评分如下所示:
var symptomScore = [{ 'Very Mild': 1, 'Mild': 2, 'Moderate': 3, 'Severe': 4, 'Very Severe': 5 }]
所以我正在尝试进行柏树测试,检查喘息是否非常轻微,那么症状评分应该是 1。
我是这样开始的:
var symptomSurveys = [
{ 'Very Mild': 1, 'Mild': 2,'Moderate': 3,'Severe': 4,'Very Severe': 5}
];
var symptomSum = [];
symptomSurveys.forEach(function(survey) {
if ()
});
symptomSum;
并且觉得我很快就走错了路。
然后我想可能是这样的:
var symptomSurveys =
{ 'Very Mild': 1, 'Mild': 2,'Moderate': 3,'Severe': 4,'Very Severe': 5};
symptomSurveys['Very Mild'] === 1
但即使我创建了一堆 if 条件,我仍然不知道最终使用 Cypress 方法将如何适应。
我处理的 Cypress 代码如下所示:
if (symptomScore['Very Mild'] === 1) {
cy.get('ul[data-cy=patientLogList] li section h3').should('eq', 'Symptom Score 1')
}
在你的帮助下,我能够像这样重写它:
var symptomSurveys =
{ 'Very Mild': 1, 'Mild': 2,'Moderate': 3,'Severe': 4,'Very Severe': 5};
cy.get('[data-cy="Wheezing"]')
.contains('Wheezing')
.invoke('text')
.then(symptom => {
const matcher = new RegExp(`${symptomSurveys[symptom]}$`) // ends with symptom score
cy.get('ul[data-cy="SymptomScore 1"]')
.contains('[data-cy="SymptomScore 1"]', /Symptom Score \d/)
.invoke('text')
.should('match', matcher)
})
我修改后的 HTML 如下所示:
<ul data-cy="patientLogList">
<li>
<section>
<h3 class="MuiTypography-root" data-cy="Symptom Score 1">Symptom Score 1</h3>
<p class="MuiTypography-root">
<section>
<h3 class="MuiTypography-root" data-cy="Wheezing">Wheezing</h3>
<p class="MuiTypography-root">Very Mild</p>
</section>
</p>
</section>
</li>
</ul>
但现在我收到以下错误:
expected 'Symptom Score 1' to match /undefined$/
【问题讨论】:
-
你能添加你一直在尝试的赛普拉斯代码吗?
-
@agoff,我添加了上次尝试的 Cypress 代码。
标签: cypress