笑话新手在这里。我正在研究DOM-manipulation Jest文档here,最终在我们的Rails应用程序中测试JQuery更改触发器,但在尝试让JQuery识别我的测试html中的特定元素时,早期的障碍失败了。因此,我有一个PledgeFormUpdates.test.js文件,它模拟表单的一部分,这是我的第一个非玩具Jest测试,它看起来像这样:
'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文件,因为在我还没走到这一步之前,我就得到了意想不到的行为)。我希望最后一行打印的内容如下所示:
<select id="pledge_pledgor_home_country">
<option value="Brazil" selected="">Brazil</option>
<option value="Germany">Germany</option>
</select>(...或者,如果什么都没有找到,就直接使用undefined --我通过将country_select设置为$('#wibble')来确认这一点)
但是我得到了一些我不理解的东西:
HTMLSelectElement {}这个对象是什么,更重要的是,我如何访问我实际针对的元素?
发布于 2019-10-24 19:35:25
我已经解决了这个问题;尽管我怀疑答案很快就会引出另一个问题。
保存HTMLSelectElement {}的容器(我最初忽略了这个容器)似乎可以访问属性(也许还有其他数据?)它所引用的元素的。
例如,console.log(country_select);输出jQuery { '0': HTMLSelectElement {}, length: 1 },如果我用标准的JQuery查询方法将该元素作为目标,我将得到与预期大致相同的结果:
console.log(country_select.attr('class');打印country-select
https://stackoverflow.com/questions/58539425
复制相似问题