首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Jasmine测试设置不同方法中描述的变量的方法

Jasmine测试设置不同方法中描述的变量的方法
EN

Stack Overflow用户
提问于 2016-06-18 03:22:15
回答 2查看 6.4K关注 0票数 0

对angular和Jasmine来说是新手。我有一个save()方法,我想在我正在测试的控制器中对它进行单元测试。它设置了一些在我之前执行select()时定义的变量(基本上就是在UI上单击行时调用的方法)。下面是代码片段:

代码语言:javascript
运行
复制
function select(row){

        vm.selected.row = row;
        vm.someValue = false;
}

现在我有了函数save()

代码语言:javascript
运行
复制
function save(){

        if(vm.selected.row == 1)
        { 
            //doSomething 
        }
        vm.someSaveValue = vm.someValue; // assigning vm.someSaveValue to the value I set to false in select method above
}

但是,如果我为Save()方法编写单元测试,我将无法访问在select()方法中创建的变量。有什么线索可以做到这一点吗?下面是我的示例测试片段

代码语言:javascript
运行
复制
describe('Test someValue setting', function(){
            it('test someValues', function (done) {
                vm.save().then(function () {
                    spyOn(vm.select)  // maybe this way, but how to access the variables this sets to ??????

                    expect(vm.someValue).toEqual('true');
                });
                scope.$apply();
                done();
            });

        });

显然,当我运行我的测试时,它到达了我的主控制器方法save(),但错误地说It vm.selected.row is undefined和失败。有什么想法吗?

谢谢。

EN

Stack Overflow用户

发布于 2016-06-23 04:29:35

您尝试做的并不是真正的单元测试。您应该单独测试save()函数。如果它依赖于另一个函数的一些值,那么它就不再是单元测试。

要在if块中进行测试,您应该手动设置vm.selected.row的值。vm.someValue也是如此。您应该测试vm.SomeSaveValue的值是您期望的值,而不是vm.someValue的值。下面是我的意思的一个例子:

代码语言:javascript
运行
复制
it('should set the value of vm.SomeSaveValue to false', function() {
    vm.someSaveValue = true;
    vm.someValue = false;
    vm.selected.row = 2;

    vm.save()

    expect(vm.SomeSaveValue).toEqual(false);
}

或者,要在if块中测试某些内容,您可以执行以下操作:

代码语言:javascript
运行
复制
it('should do something', function() {
    vm.selected.row = 1;

    vm.save();

    expect('something done in if block').toBe('some value');
}

这将从测试中移除对select函数的任何依赖。如果您的save函数实际上调用了select(),那么您应该使用间谍和and.CallFake()选项。

票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37888957

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档