首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >茉莉花:试着测试一个AngularJS工厂函数

茉莉花:试着测试一个AngularJS工厂函数
EN

Stack Overflow用户
提问于 2015-04-26 21:52:27
回答 1查看 334关注 0票数 1

我对AngularJS的测试是完全陌生的。我已经设置了业力,现在正试图在我所写的工厂中测试某一功能。

这里是我工厂的一个片段:

代码语言:javascript
复制
app.factory('helpersFactory', ['constants', function (constants) {
    return {

        someFunction: function() {
        },

        is24x24Icon: function (iconNum) {
            return ((iconNum >= 10090 && iconNum <= 10125) ;
        }
    };

 }]);

然后我进行了以下测试:

代码语言:javascript
复制
describe('Factory: helpersFactory', function () {

    beforeEach(module('ppMobi'));

    var fct;
    beforeEach(inject(function ($factory) {
        fct = $factory('helpersFactory');
    }));

    it('should detect iconNum 10090 is a 24 x 24 icon', function () {

        var iconNum = 10090;
        var is24x24Icon = fct.is24x24Icon(iconNum);
        expect(is24x24Icon).toBeTruthy();

    });
});

我从卡玛那里得到一个错误,告诉我它不能读未定义的“is24x24icon”。因此,我只能假设我的工厂在测试期间没有被正确创建。我确实依赖于其他函数使用的工厂中的常量。这只是我在我的主应用程序模块上安装的一个angular.constant()。

我已经找到了一些其他的帖子,但是我不确定如何继续,我是否需要将我的常量依赖项注入到我的测试中?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-26 22:53:48

有点新的自我,但我认为您需要使用下划线名称下划线技巧注入您的工厂:

代码语言:javascript
复制
var fct;
beforeEach(inject(function (_helpersFactory_) {
    fct = _helpersFactory_;
}));

这个博客使用摩卡,但我发现它很有用,卡玛的东西应该是一样的:https://www.airpair.com/angularjs/posts/testing-angular-with-karma

是的,您也需要注入常量(链接显示了方法),但是您的已发布代码似乎没有使用常量,所以在这个特定的测试中不需要它。

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

https://stackoverflow.com/questions/29884021

复制
相关文章

相似问题

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