Javascript D3JS测试-未激发enter()

Javascript D3JS测试-未激发enter(),javascript,d3.js,jasmine,jasmine-jquery,Javascript,D3.js,Jasmine,Jasmine Jquery,我在使用D3JS设置测试时遇到一些问题,下面是我要测试的代码: } 这是我的测试单元,我想在这里测试DOM中是否存在: 它(“应该测试drawCityWindow方法”,函数(){ var city=description[“cities”][0]; drawCityWindow(城市,1); expect($('#'+city.id+'-window')[0]).toBeInDOM() }) 我正在使用著名的jasmine jquery库检索DOM对象,我发现在运行测试时,从未启动过ent

我在使用D3JS设置测试时遇到一些问题,下面是我要测试的代码:

}

这是我的测试单元,我想在这里测试DOM中是否存在:

它(“应该测试drawCityWindow方法”,函数(){
var city=description[“cities”][0];
drawCityWindow(城市,1);
expect($('#'+city.id+'-window')[0]).toBeInDOM()
})
我正在使用著名的jasmine jquery库检索DOM对象,我发现在运行测试时,从未启动过enter()函数


你有关于这个问题的一些线索吗?

嗯,这个问题有点棘手:我将一个
city
数据集传递给d3js,而不是将其放入一个类似
[city]
的数组中

也就是说,我认为d3js迭代了
city
对象的键,而不是对象本身


非常感谢你的帮助

d3端看起来不错,可能是你可以console.log查看函数是否被调用,另一种可能是cities数组是空的。不幸的是,函数被调用了,并且定义了一个city,我在看到你的评论后才检查。谢谢你的快速回答。愚蠢的问题:“.svg”是一个什么元素的类?所以,去掉这个点。当您编写
select(“svg”)
时,您选择的是svg元素,但当您编写
select(“svg”)
时,您仅选择具有类“svg”的内容。但是仅仅删除点是行不通的:您不能将HTML元素(如“div”)附加到SVG中。这是绝对正确的,感谢您指出这一点。我来看看foreignObject的属性
function drawCityWindow(city,scale){
  var d3cityWindow = d3.select(".svg").selectAll(".d3city-window").data(city);

  d3cityWindow.enter()
    .append("div")
    .attr("id", function (d) {
        return d.id+"-window"
    })