如何为单元测试提供模拟过滤器

use*_*866 10 angularjs karma-jasmine

我有一个具有这行代码的Controller

 var formattedDate= $filter('date')(dateColName,short);
Run Code Online (Sandbox Code Playgroud)

我正在尝试单元测试这个控制器,我不清楚如何在我的代码中模拟日期过滤器.

kev*_*ker 21

在Angular中模拟过滤器时,您需要在过滤器名称的末尾添加"过滤器",因为Angular会像服务一样过滤,但会在末尾添加"过滤器".试试这个例子:

var mockFilter = function() {
    return 'whatyouwantittoreturn';
};

beforeEach(function() {
    module(function($provide) {
        $provide.value('dateFilter', mockFilter );
    });
});
Run Code Online (Sandbox Code Playgroud)

  • 这很好,谢谢!我犯了一个愚蠢的错误,在我的注入()后发出这个并得到一个警告,所以对那些使用它的人来说,把它放在你的注射之前(或者它会'bark bark). (4认同)