【问题标题】:Error testing this function测试此功能时出错
【发布时间】:2015-08-07 08:19:36
【问题描述】:

我想用 Jasmine 为这个函数写一个单元测试:

getState: function () {
    var $selectState = this.$('#selectState:visible');
    if ($selectState) {
        return $selectState.val();
    }
    return null;
},

我写了这个测试:

describe("function getType", function(){
    it("should return value", function() {
        var obj = {val: function(){return 'ok';}};
        var spy1 = jasmine.createSpy("spy1").and.callFake(
            function() {
                return obj;
            }
        );
        var dollar = $;
        $ = spy1;
        expect(view.getType()).toEqual('ok');
        $ = dollar;
    });
});

在我看来,它应该有效,但它没有。这是错误信息:

预期未定义等于“ok”。

有人知道问题出在哪里吗?

【问题讨论】:

  • view.getType() 的值是多少?
  • 视图在哪里设置?
  • if ($selectState) { 总是正确的,但 return $selectState.val(); 不是。如果 $selectState.size() 为 0,则 $selectState.val() 未定义。
  • 这一定是问题所在。但我该如何解决?尺寸在哪里调用?

标签: javascript unit-testing testing jasmine bdd


【解决方案1】:

我解决了这个问题。 this.$ 似乎与$ 不同,因此像这样更改测试功能解决了问题:

describe("function getState", function(){
    it("should return value", function() {
        var obj = {val: function(){return 'ok';}};
        var spy1 = jasmine.createSpy("spy1").and.returnValue(obj);
        var dollar = view.$;
        view.$ = spy1;
        expect(view.getState()).toEqual('ok');
        view.$ = dollar;
    });
});

【讨论】:

    猜你喜欢
    • 2021-12-16
    • 1970-01-01
    • 2016-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多