if语句测试中的Jasmine模拟值

时间:2018-04-13 20:43:34

标签: javascript jasmine

我在函数中有一个if-else语句。我想测试两种情况。启动实例时,self.count设置为1。当我运行我的测试时,它会转到虚假陈述。如何让self.count = 2进入else语句?

测试:

it('verify change', function () {
    spyOn(this.instance, 'change').and.callThrough();
    this.instance.change('messageBoard');
    expect(this.instance.change).toHaveBeenCalled();
});

使用Javascript:

self.count = 1;

self.change = function change() {
    if(self.count <= 1) {
        // do stuff
    } else {
        // do stuff
    }
};

我知道我可以使用this.object.method.and.returnValue()使方法返回一个值,但我不知道如何使用变量。

1 个答案:

答案 0 :(得分:0)

所以我似乎不需要模拟变量。我可以在测试中分配它,如:

it('verify change', function () {
    this.instance.count = 2; // this would nake it go to the else block
    spyOn(this.instance, 'change').and.callThrough();
    this.instance.change('messageBoard');
    expect(this.instance.change).toHaveBeenCalled();
});