从 Karma/Jasmine 测试加载外部文件

Loading external file from Karma/Jasmine test(从 Karma/Jasmine 测试加载外部文件)
本文介绍了从 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?

您可以通过夹具提供 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 测试加载外部文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Update another component when Formik form changes(当Formik表单更改时更新另一个组件)
Formik validation isSubmitting / isValidating not getting set to true(Formik验证正在提交/isValiating未设置为True)
React Validation Max Range Using Formik(使用Formik的Reaction验证最大范围)
Validation using Yup to check string or number length(使用YUP检查字符串或数字长度的验证)
Updating initialValues prop on Formik Form does not update input value(更新Formik表单上的初始值属性不会更新输入值)
password validation with yup and formik(使用YUP和Formick进行密码验证)