从Karma / Jasmine测试加载外部文件 [英] Loading external file from Karma/Jasmine test

查看:182
本文介绍了从Karma / Jasmine测试加载外部文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试完成Jasmine测试(使用Karma和IntelliJ 13)来验证JSON文件。理想情况下,我的测试只是将JSON文件加载到数据对象中,然后让我解析以检查有效的格式和数据。我不需要在之前或之后验证函数,也不需要针对服务器进行测试。

I'm trying to accomplish a Jasmine test (using Karma and IntelliJ 13) to validate JSON files. Ideally, my test would simply load a JSON file into a data object, then let me parse through to check for valid formatting and data. I don't need to validate functions before or after, nor do I need to test against a server.

我的基本设置是这样的:

My basic setup is like this:

it("should load an external file", function(){
var asyncCallComplete, result,
            _this = this;
        // asyncCallComplete is set to true when the ajax call is complete
        asyncCallComplete = false;

        // result stores the result of the successful ajax call
        result = null;

        // SECTION 1 - call asynchronous function
        runs(function() {
            return $.ajax('/test/config.json', {
                type: 'GET',
                success: function(data) {
                    asyncCallComplete = true;
                    result = data;
                },
                error: function() {
                    asyncCallComplete = true;
                }
            });
        });

        // SECTION 2 - wait for the asynchronous call to complete
        waitsFor(function() {
            return asyncCallComplete !== false;
        }, "async to complete");

        // SECTION 3 - perform tests
        return runs(function() {
            return expect(result).not.toBeNull();
        });
}

问题是无论我使用什么路径,都会收到404错误并且文件将不会加载。我尝试使用此测试服务从远程服务器加载外部JSON结果:

The problem is that no matter what path I use, I get a 404 error and the file won't load. I've tried loading an external JSON result from a remote server using this test service:

http://date.jsontest.com/

这样可行。

我的测试文件名为/test/mySpec.js,我的karma.conf.js文件位于根目录下。我已经将JSON文件移动到所有这些位置而没有运气。我做错了什么?

My test file is named /test/mySpec.js and my karma.conf.js file is on the root. I have moved around the JSON file to all of these locations with no luck. What am I doing wrong?

更新答案:

根据答案下面,我把它添加到我的karma.conf.js:

Per the answer below, I added this to my karma.conf.js:

// fixtures
{ pattern: 'test/*.json',
    watched: true,
    served:  true,
    included: false
}

然后,我用这样的方式写了我的测试:

Then, I wrote my test this way:

    var json:any;
    it("should load a fixture", function () {
        jasmine.getFixtures().fixturesPath = "base/test/"
        var f = readFixtures("registration.json");
        json = JSON.parse(f);
        expect(json).toBeDefined();

    })

    it("should have a title", function () {
        expect(json.title).toNotBe(null);
    })
    etc...

它通过。

推荐答案

你在服务吗?通过karma.config.js的JSON文件?

Are you serving the JSON file via karma.config.js?

您可以通过fixture提供JSON文件:

You can serve JSON files via fixture:

files: [
      // angular 
      'angular.min.js',
      'angular-route.js',
      'angular-mocks.js',

      // jasmine jquery helper
     'jquery-1.10.2.min.js',
     'jasmine-jquery.js',

      //  app
      '../../public/js/app.js',

      // tests
      '*-spec.js',

      // JSON fixture
      { pattern:  '/test/*.json',
        watched:  true,
        served:   true,
        included: false }
    ],

这篇关于从Karma / Jasmine测试加载外部文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆