当前位置: 首页 > 面试题库 >

使用AngularJS HotTowel中的vm“ ControllerAs”语法从单元测试文件访问$ scope

陆晓博
2023-03-14
问题内容

例如,请参见此处:http : //www.johnpapa.net/angularjss-controller-as-and-the-vm-
variable/

就像标题所暗示的那样,我将按照本教程 [http://tech.pro/tutorial/1473/getting-started-with-
angularjs-unit-testing]
进行单元测试,事实证明一切都很好。 我似乎无法将vm变量 作为$ scope 来访问。

dashboard.js

var controllerId = 'dashboard';
angular.module('app')
    .controller(controllerId, ['common', 'datacontext', dashboard]);


function dashboard(common, datacontext) {
    var getLogFn = common.logger.getLogFn;
    var log = getLogFn(controllerId);

    var vm = this;      
    vm.title = "Dashboard";

仪表板.Spec.js

describe("app module", function() {
    beforeEach(module("app"));

    describe("dashboard", function() {
        var scope,
            controller;

        beforeEach(inject(function($rootScope, $controller) {
            scope = $rootScope.$new();
            controller = $controller;
        }));

        it("should assign Dashboard as title", function() {
            controller("dashboard", {
                $scope: scope
            });
            expect(scope.title).toBe("Dashboard");
        });
    });
});

我尝试过的方法:当我直接在控制器依赖项中命名“ $ scope”并将其设置为“ title”属性时,它可以工作(测试通过)。但是,我想保持原样。

我还尝试过直接在依赖项中传递$ scope并将控制器参数命名为“ vm” …

Karmas测试失败消息为: 预期未定义为“仪表板”

感谢任何帮助!


问题答案:

嗯,现在很明显…我可以通过引用测试中创建的控制器来访问vm变量:

 it("should assign Dashboard as title", function () {
       var vm = controller("dashboard", { $scope: scope });
       expect(vm.title).toBe("Dashboard");
    });


 类似资料:
  • 问题内容: 我正在创建一个Java单元测试来测试一些我最近更改的代码。但是,我正在测试的方法实例化了一个使用ResourceBundle的类…… 资源文件位于Web包中,位于 我的测试保存在我的xml包中 在正常运行时,资源束是可访问的,但在运行单元测试时则不可访问。它引发此错误…… 我该怎么办?我可以启用测试以某种方式查看资源包吗?我可以在某个地方以某种方式看到代码的模拟资源文件吗? 问题答案:

  • 我正在尝试用解析XML中不同元素的特定方法编写一些单元测试。但是我在单元测试中解析“测试”xml文件时遇到了一些问题。 我的问题并不是与XML/XSD文件有关,而是关于如何在单元测试中正确解析它们。 这是我到目前为止的代码: 即使我在实现方法中以同样的方式进行解析,我也会得到以下错误: 错误:读取文件“dir/testxsd.xsd”时出错:无法加载外部实体“dir/testxsd.xsd” 我尝

  • 问题内容: 大部分Angular教程都讨论了通过Protractor使用端到端测试来测试编译后的模板是否按预期出炉。我想知道是否可以通过单元测试来做到这一点。 大多数讨论在单元测试中引用HTML代码的教程都描述了在测试中编译自己的书面代码,例如,以确保正确访问指令: 但是,假设我要测试实际模板文件中的代码。就像我想测试ng-hide是否成功设置一样。我希望能够执行以下操作: 我这样做时不起作用。被

  • 问题内容: 我最近正在研究的程序中的一个常见任务是以某种方式修改文本文件。(嘿,我在Linux上。所有内容都是一个文件。我进行大规模的系统管理。) 但是代码修改的文件可能不存在于我的桌面盒中。而且,如果它在我的桌面上,我可能不想修改它。 我已经了解了Dive Into Python中的单元测试,并且很清楚我在测试将十进制转换为罗马数字的应用程序时想要做的事情(DintoP中的示例)。测试是完全独立

  • 问题内容: 我刚刚升级到Xcode 6 beta 4,其中Swift编译器现在支持access修饰符。 这给我带来了一个问题,因为我的单元测试现在无法编译(由于类未公开)。 简单的解决方案当然是将所有经过测试的类公开,但这听起来像是骇客(我个人的喜好是即使在非公共类上也编写单元测试)。 在.NET和Java中,通常可以允许单元测试程序集级别(或Java / OSGi中的捆绑包级别)从单元测试程序集

  • 问题内容: 我有一个在。 当我尝试测试通过jar文件加载此文件的类时,测试失败,因为它无法在路径()中找到该文件。我通过测试得到的路径是: 但是该文件不存在吗? 问题答案: 从文件将可在主程序运行时类路径,而无论是从文件,并会在试运行期间可在classpath。 一种检索驻留在类路径上的文件的方法是: ..的类型取决于文件的内容。您还可以将文件作为InputStream获取: