角度测试"Office is not defined"



我正在尝试为用 Angular 6 编写的 Excel 加载项添加持续集成。我正在使用业力和茉莉花。当我运行测试时,每个测试都通过了,但随后出现以下错误:

Chrome 68.0.3440 (Windows 10 0.0.0( 错误{
"消息": "之后抛出错误未捕获的引用错误: 未定义 Office",
"str": "之后抛出错误未捕获的引用错误
: 未定义
Office "}

这是我package.json

{
"name": "top-secret",
"version": "0.0.0",
"license": "MIT",
"scripts": {
"ng": "ng",
"start": "ng serve --ssl true --port 3000",
"build": "ng build --prod",
"test": "ng test",
"lint": "ng lint",
"e2e": "ng e2e"
},
"private": true,
"dependencies": {
"@angular/animations": "^6.1.0",
"@angular/cdk": "^6.4.2",
"@angular/common": "^6.1.0",
"@angular/compiler": "^6.1.0",
"@angular/core": "^6.1.0",
"@angular/forms": "^6.1.0",
"@angular/http": "^6.1.0",
"@angular/material": "^6.4.2",
"@angular/material-moment-adapter": "^6.4.2",
"@angular/platform-browser": "^6.1.0",
"@angular/platform-browser-dynamic": "^6.1.0",
"@angular/router": "^6.1.0",
"core-js": "^2.5.7",
"intl": "^1.2.5",
"jquery": "^3.3.1",
"moment": "^2.22.2",
"ng2-daterangepicker": "^2.0.12",
"npm": "^6.3.0",
"rxjs": "^6.2.2",
"rxjs-compat": "^6.0.0-rc.0",
"saturn-datepicker": "^6.0.5",
"zone.js": "^0.8.19"
},
"devDependencies": {
"@angular-devkit/build-angular": "^0.7.2",
"@angular/cli": "^6.1.2",
"@angular/compiler-cli": "^6.1.0",
"@angular/language-service": "^6.1.0",
"@types/jasmine": "^2.8.8",
"@types/jasminewd2": "~2.0.2",
"@types/jquery": "^3.3.5",
"@types/node": "^10.5.5",
"@types/office-js": "0.0.101",
"codelyzer": "^4.4.2",
"jasmine-core": "^3.2.1",
"jasmine-spec-reporter": "~4.2.1",
"karma": "^3.0.0",
"karma-chrome-launcher": "~2.2.0",
"karma-coverage-istanbul-reporter": "^2.0.1",
"karma-jasmine": "^1.1.2",
"karma-jasmine-html-reporter": "^1.2.0",
"karma-phantomjs-launcher": "^1.0.4",
"phantomjs-prebuilt": "^2.1.16",
"protractor": "~5.4.0",
"ts-node": "~7.0.0",
"tslint": "~5.11.0",
"typescript": "^2.9.2"
}
}

karma.conf.js

// Karma configuration file, see link for more information
// https://karma-runner.github.io/1.0/config/configuration-file.html
module.exports = function (config) {
config.set({
basePath: '',
frameworks: ['jasmine', '@angular-devkit/build-angular'],
plugins: [
require('karma-jasmine'),
require('karma-chrome-launcher'),
require('karma-phantomjs-launcher'),
require('karma-jasmine-html-reporter'),
require('karma-coverage-istanbul-reporter'),
require('@angular-devkit/build-angular/plugins/karma'),
],
client: {
clearContext: false // leave Jasmine Spec Runner output visible in browser
},
coverageIstanbulReporter: {
dir: require('path').join(__dirname, 'coverage'), reports: ['html', 'lcovonly'],
fixWebpackSourcePaths: true
},
reporters: ['progress', 'kjhtml'],
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: true,
browsers: ['Chrome', 'PhantomJS'],
singleRun: false
});
};

你如何加载 Office.js?("据我所知,它们通过脚本元素加载"(

无论如何,实际的代码将是有益的,但我能想到的是,当您运行测试时,这些测试异步运行,并且 Office.js 当时尚未加载!确保在测试之前加载 Office.JS。

好的,多亏了 TwistedTamarin 的回答,我发现如果你通过 CDN 加载脚本,你需要添加它做karma.conf.js

files: [
'https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js'
],

链接到响应。

最新更新