首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Jest (/JQuery)测试中确定测试html元素的目标?

如何在Jest (/JQuery)测试中确定测试html元素的目标?
EN

Stack Overflow用户
提问于 2019-10-24 18:32:28
回答 1查看 418关注 0票数 0

笑话新手在这里。我正在研究DOM-manipulation Jest文档here,最终在我们的Rails应用程序中测试JQuery更改触发器,但在尝试让JQuery识别我的测试html中的特定元素时,早期的障碍失败了。因此,我有一个PledgeFormUpdates.test.js文件,它模拟表单的一部分,这是我的第一个非玩具Jest测试,它看起来像这样:

代码语言:javascript
复制
'use strict';

import pledge_form_updates from '../../app/javascript/components/PledgeFormUpdates.js';

test('Displays GDPR checkbox on EU country selection', () => {

  pledge_form_updates();

  // Set up our document body
  document.body.innerHTML =
    '<select id="pledge_pledgor_home_country" class="country-select">' +
    '  <option value="Brazil" selected>Brazil</option>' +
    '  <option value="Germany">Germany</option>' +
    '</select>' +

    '<div id="js-gdpr-input" class="hidden">' +
    '  <div class="form-group">' +
    '    <div class="field-group" data-children-count="1">' +
    '      <input name="pledge[receive_comms]" disabled="disabled" type="hidden" value="0">' +
    '      <input type="checkbox" value="1" name="pledge[receive_comms]" id="pledge_receive_comms">' +
    '      <label for="pledge_receive_comms" class="standard-label -checkbox">' +
    "        I'd like to be kept in the loop via the Founders Pledge email digest." +
    '      </label>' +
    '    </div>' +
    '  </div>' +
    '</div>'

  const $ = require('jquery');
  var country_select = $('#pledge_pledgor_home_country')
  console.log(country_select[0])
});

目前,我没有任何期望(除非有人要求,否则我不会浪费空间描述它正在测试的JS文件,因为在我还没走到这一步之前,我就得到了意想不到的行为)。我希望最后一行打印的内容如下所示:

代码语言:javascript
复制
<select id="pledge_pledgor_home_country">
  <option value="Brazil" selected="">Brazil</option>
  <option value="Germany">Germany</option>
</select>

(...或者,如果什么都没有找到,就直接使用undefined --我通过将country_select设置为$('#wibble')来确认这一点)

但是我得到了一些我不理解的东西:

代码语言:javascript
复制
HTMLSelectElement {}

这个对象是什么,更重要的是,我如何访问我实际针对的元素?

EN

回答 1

Stack Overflow用户

发布于 2019-10-24 19:35:25

我已经解决了这个问题;尽管我怀疑答案很快就会引出另一个问题。

保存HTMLSelectElement {}的容器(我最初忽略了这个容器)似乎可以访问属性(也许还有其他数据?)它所引用的元素的。

例如,console.log(country_select);输出jQuery { '0': HTMLSelectElement {}, length: 1 },如果我用标准的JQuery查询方法将该元素作为目标,我将得到与预期大致相同的结果:

代码语言:javascript
复制
console.log(country_select.attr('class');

打印country-select

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58539425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档