首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何模拟ngModel?

如何模拟ngModel?
EN

Stack Overflow用户
提问于 2013-08-01 01:33:44
回答 2查看 1.9K关注 0票数 1

所以我正在测试一个控制器,它引用了一个在DOM中指定为ngModel的属性。但是当我测试我的控制器时,我没有模板。因此,每当在控制器中访问$scope.foo.property时,它都会抛出一个错误。

EN

回答 2

Stack Overflow用户

发布于 2013-08-01 02:50:47

在测试中,您可以在实例化控制器之前定义属性:

代码语言:javascript
复制
it('should mock ng-model', inject(function($rootScope, $controller) {

    $rootScope.foo = {
        property: 'mock value'
    };

    $controller('myController', {$scope: $rootScope});
})));
票数 1
EN

Stack Overflow用户

发布于 2013-08-01 02:52:23

在Angular应用程序中,控制器和视图(模板)是两个独立的东西。将它们粘合在一起的是scope (或模型)。所以,要测试一个控制器,你只需要一个假的作用域来传递给控制器函数。

下面是一个使用全局控制器(只是为了让事情更容易理解--不要在生产代码中使用全局控制器)和伪测试函数的非常简单的示例:

代码语言:javascript
复制
function MyCtrl($scope) {
    $scope.bar = $scope.foo.property + 1;
}

function test() {
    var scope = { foo: { property: 1 }};
    MyCtrl(scope);
    expect(scope.bar).toBe(2);  
}

这比在模块中定义控制器要复杂一些,但那是另一回事了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17977139

复制
相关文章

相似问题

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