Javascript chrome未定义-Mocha和Typescript
我很难用Javascript chrome未定义-Mocha和Typescript,javascript,node.js,typescript,mocha.js,Javascript,Node.js,Typescript,Mocha.js,我很难用typescript编译测试。当尝试运行npm测试时got onClicked:chrome.browserAction!==未定义?chrome.browserAction.onClicked:未定义 我有一些基本的测试,看起来像是: import Nightmare from "nightmare"; import * as chai from "chai"; const Client = require('node-rest-client').Client; import chai
typescript
编译测试。当尝试运行npm测试时
got
onClicked:chrome.browserAction!==未定义?chrome.browserAction.onClicked:未定义
我有一些基本的测试,看起来像是:
import Nightmare from "nightmare";
import * as chai from "chai";
const Client = require('node-rest-client').Client;
import chaiString from "chai-string";
chai.use(chaiString);
import DomainDriver from "../../app/scripts/domains/driver";
const expect: any = chai.expect;
{
...
"test": "mocha --recursive --require ts-node/register --require babel-core/register tests/domains/*"
},
export default {
browserAction: {
onClicked: chrome.browserAction !== undefined ? chrome.browserAction.onClicked : undefined,
测试配置如下所示:
import Nightmare from "nightmare";
import * as chai from "chai";
const Client = require('node-rest-client').Client;
import chaiString from "chai-string";
chai.use(chaiString);
import DomainDriver from "../../app/scripts/domains/driver";
const expect: any = chai.expect;
{
...
"test": "mocha --recursive --require ts-node/register --require babel-core/register tests/domains/*"
},
export default {
browserAction: {
onClicked: chrome.browserAction !== undefined ? chrome.browserAction.onClicked : undefined,
模块代码如下:
import Nightmare from "nightmare";
import * as chai from "chai";
const Client = require('node-rest-client').Client;
import chaiString from "chai-string";
chai.use(chaiString);
import DomainDriver from "../../app/scripts/domains/driver";
const expect: any = chai.expect;
{
...
"test": "mocha --recursive --require ts-node/register --require babel-core/register tests/domains/*"
},
export default {
browserAction: {
onClicked: chrome.browserAction !== undefined ? chrome.browserAction.onClicked : undefined,
app
目录get是用webpack编译的,但它在npm测试中抛出错误。
以下gulp任务已使用webpack成功运行
吞咽任务
gulp.task(`${PLATFORM}-webpack`, (callback) => {
webpack(Object.create(webpackConfig), function(err, stats) {
if(err) throw new Exception(`${PLATFORM}-webpack`, err);
console.log(`[${PLATFORM}-webpack]`, stats.toString({
colors: true
}));
callback();
});
});
我还缺什么吗?
感谢您查看您的目录您要查找的文件位于“../../app/domains/driver.ts”中,除非您键入了目录。chrome.browserAction是web扩展代码。Node.js不知道chrome全局或web扩展
如果您想测试web扩展代码,您将需要为您使用的每个API实现一个模拟实例,因为遗憾的是,到目前为止还没有类似的实例。我已经开始为我的扩展创建一些模拟函数:
记住,我做这些是为了满足我的需要。它们并不完整,也不涵盖所有情况。我通过将chrome
定义为
const chrome = require('sinon-chrome/apps');
(global as any).chrome = chrome;
这是有问题的打字错误,但错误仍然存在。我没有对chrome.tabs
或任何与chrome
api相关的测试。我还需要这个类吗?在测试的某个时候,显示的代码被执行了。您需要防止在测试中执行此代码以避免此问题。您可以检查环境当前是否正在运行测试,如下所述:另一种选择(以及更具体的检查)是在使用全局变量“chrome”之前检查它是否存在。