Я рассматриваю создание интерактивных элементов диаграммы с помощью d3.js.
Я пытаюсь проверить изменение цвета заливки из-за события наведения курсора мыши с жасмином. В идеале я хочу, чтобы цвет элемента пути изменился на «# ff0000» при наведении курсора мыши, но мой терминал жасмина говорит мне, что этого не происходит — элемент, похоже, остается того же цвета, что и изначально установлен, например, мой элемент с идентификатором # 1 выдает: Ожидается, что «# 1f77b4» будет «# ff0000».
Я также использую библиотеки jquery и jasmine-jquery.
Соответствующий код из моего приспособления кольцевой диаграммы, DonutChartFixture.html
var color = d3.scale.category20();
var path = svg.selectAll("path")
.data(pie(data))
.enter().append("path").attr("class", "path")
.attr("fill", function(d, i) { return color(i); })
// removed id declaration here
.attr("d", arc)
.on("mouseover", function(){d3.select(this).style("fill", "#ff0000");})
.on("mouseout" , function(){d3.select(this).style("fill", function(d) {
return d.color;
});});
// want to highlight the first path element
var path_one = d3.select('.path').attr("id", "path_one");
И тест из моего файла спецификации, DonutChart.js
function loadDonutChart() {
loadFixtures('DonutChartFixture.html');
}
describe("Mouseover events", function() {
var spyEvent;
beforeEach(function() {
loadDonutChart();
});
// updated test for element d3.select('.path').attr("id", "path_one")
it("#path_one should change fill colour to rgb(255,0,0)", function() {
spyEvent = spyOnEvent('#path_one', 'mouseover');
$('#path_one').trigger("mouseover");
// expect('mouseover').toHaveBeenTriggeredOn('#path_one');
expect(path_one.style('fill')).toEqual('rgb(255,0,0)');
});
});
Как видите, я пробовал выбирать элементы по идентификатору, а также по имени тега, но безрезультатно, оба выдают тот же результат, что и выше. Ваше здоровье.