小编Sun*_*dhu的帖子

在Jasmine规范测试中触发d3事件

我试图使用Jasmine触发d3事件.特别是,我想检查我的事件监听器是否使用Jasmine间谍进行调用.

例如,如果我将d3缩放行为附加到svg元素(我的前端使用Backbone.js):

代码(a):

class MyView extends Backbone.View
  initialize: ->
    zoom = d3.behavior.zoom().on("zoom", this.zoom_listener)   
    d3.select(this.el).append("svg").attr("class", "viewport").call(zoom)

  zoom_listener: ->
    console.log("zoom called") 
Run Code Online (Sandbox Code Playgroud)

Jasmine中的以下测试失败:

代码(b):

it "calls zoom listener on dblclick", ->
  zoom_spy = spyOn(MyView.prototype, "zoom_listener").andCallThrough()
  view = new MyView()
  view.$(".viewport").trigger("dblclick")
  waitsFor((-> zoom_spy.callCount == 1), "Call zoom", 1000) 
Run Code Online (Sandbox Code Playgroud)

另一方面,(正如一个完整性检查)如果我将'dblclick'事件绑定到我的视图,如下所示,上面的测试即代码(b)将通过:

代码(c):

class MyView extends Backbone.View
  events:
    "dblclick" : "zoom_listener"

  initialize: ->
    zoom = d3.behavior.zoom().on("zoom", this.zoom_listener)   
    d3.select(this.el).append("svg").attr("class", "viewport")
    # .call(zoom)     # commented off this line for the sanity check  

  zoom_listener: ->
    console.log("zoom called")  
Run Code Online (Sandbox Code Playgroud)

任何人都可以给我一些见解,为什么我似乎无法在Jasmine测试中触发D3变焦事件,即代码(b)使用我上面的原始视图,即代码(a)?

backbone.js jasmine d3.js

3
推荐指数
1
解决办法
1764
查看次数

MySQL 分隔符语句错误

我正在尝试在 mysql 中运行以下脚本:

DELIMITER $$$
DROP TRIGGER IF EXISTS invoice_line_insert
$$$
CREATE TRIGGER invoice_line_insert AFTER INSERT
ON invoice_line FOR EACH ROW
BEGIN
    IF NEW.type = "DELIVERY" THEN
        UPDATE invoice
        SET invoice.etdelivery_amount = invoice.etdelivery_amount + NEW.amount
        WHERE invoice.id_invoice = NEW.invoice_parent_id_invoice;
    ELSE
        UPDATE invoice
        SET invoice.etexpense_amount = invoice.etexpense_amount + NEW.amount
        WHERE invoice.id_invoice = NEW.invoice_parent_id_invoice;
    END IF;
    UPDATE invoice
    SET invoice.vatamount = (NEW.amount * ((
                SELECT vat.rate
                FROM vat
                WHERE vat.id_vat = NEW.vat_id_vat
    ) / 100)) + invoice.vatamount
    WHERE invoice.id_invoice = NEW.invoice_parent_id_invoice;

    UPDATE …
Run Code Online (Sandbox Code Playgroud)

mysql playframework

1
推荐指数
1
解决办法
999
查看次数

标签 统计

backbone.js ×1

d3.js ×1

jasmine ×1

mysql ×1

playframework ×1