4

我的 Karma 配置文件中的 files 属性是

files: [
            // Program files
            'public/js/init.js',

            // Load mocks directly from bower
            'bower_components/angular-mocks/angular-mocks.js',

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

            // Specs
            'test/unit/**/*.spec.*'
        ]

其中一个固定装置如下:test/fixtures/languages.json

{
    "ab":{
        "name":"Abkhaz",
        "nativeName":"аҧсуа"
    },
    "aa":{
        "name":"Afar",
        "nativeName":"Afaraf"
    },
    "af":{
        "name":"Afrikaans",
        "nativeName":"Afrikaans"
    }
}

如何在期望语句的变量中加载上面提到的 json?

4

1 回答 1

1

您可以使用 ajax 手动执行此操作,也可以将 karma 与 requirejs 和 requirejs json 文件加载器插件一起使用...

var xhr = new XMLHttpRequest();
xhr.open('get', '/base/test/fixtures/languages.json', false);
xhr.send();
console.log(xhr.status, xhr.responseText); //200, {...}

Karma 在浏览器中运行,所以你可以用 karma 做任何事情,你可以在浏览器中正常做的事情......如果你想使用从服务器端生成的信息,请注意 karma 确实有自己的服务器,所以你的测试运行在不同的域下,您应该使用 CORS 从您的应用程序服务器获取数据。通过客户端静态文件,如果您在业力配置文件中注册它们的模式,这应该不会导致问题......

于 2014-01-16T04:56:31.887 回答