- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经看到这个网站上还有其他一些关于如何监视构造函数的帖子。我明白我应该覆盖外部库原型(prototype)中的构造函数。这就像从外部库中监视函数一样,例如:
import * as cp from 'child_process';
spyOn(cp, 'spawn').and.returnValue(...);
constructor
或
init
我要模拟的类型的原型(prototype)中的方法。
public methodToTest() {
this.firstWindow = new BrowserWindow(...);
// hide is called, or for that matter any other method that I want to spy upon
this.firstWindow.hide();
}
BrowserWindow
上的具体方法是否已被调用(在此示例中为
hide
)。
import * as electron from 'electron';
// ...
beforeEach(() => {
browserWindowSpy = createSpyObj('browser', [ 'on', 'hide', 'show']);
// there is no constructor or init method on the prototype
spyOn(electron.BrowserWindow.prototype, 'constructor').and.returnValue(browserWindowSpy);
underTest = new Application();
});
electron.d.ts
中有一个构造函数文件,如果我查看类型定义,但我不知道如何引用它。
browserWindowSpy
然后我可以在测试中使用它来测试一些期望。在这种情况下模拟的方法是什么,其中类型来自外部库并且不是函数但必须使用
new
实例化关键词。我在这种情况下苦苦挣扎,或者现在已经有一段时间了。
BrowserWindow
使用创建者方法在类内部并监视它以返回假浏览器(您不应模拟被测类的方法):
protected createBrowserWindow(options?: any): BrowserWindow{
return new BrowserWindow(options);
}
public methodToTest() {
this.firstWindow = this.createBrowserWindow(...);
// hide is called, or for that matter any other method that I want to spy upon
this.firstWindow.hide();
}
beforeEach(() => {
browserWindowSpy = createSpyObj('browser', [ 'on', 'hide', 'show']);
underTest = new Application();
spyOn(underTest, 'createBrowserWindow').and.returnValue(browserWindowSpy);
});
最佳答案
您可以使用 mockery
在 Node.js 中模拟对象。
import * as mockery from "mockery";
BrowserWindow
对象,您可以在
beforeEach
中执行此操作:
const fakeBrowserWindow = jasmine.createSpyObj("browser", ["hide"]);
const fakeBrowserWindowCtr = jasmine.createSpy("BWCtr").and.returnValue(fakeBrowserWindow);
mockery.enable();
mockery.registerMock("electron", { BrowserWindow: fakeBrowserWindowCtr });
afterEach
做:
mockery.deregisterAll();
mockery.disable();
const { BrowserWindow } = require("electron");
BrowserWindow
.
mockery.registerMock
,或者做你的
electron
需要在功能级别,而不是模块级别。
关于typescript - 窥探 electron.BrowserWindow 构造函数并返回一个带有 Jasmine 的模拟对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57203853/
以下代码有效: import { app, BrowserWindow } from 'electron'; class Main { static mainWindow: Electron.
代码引用 : https://github.com/aredfox/screencapturer 问题描述 : Here是 electron带有“MainWindow”的应用程序,其中包含一个“开始捕
我的标题可能没有正确表达我的问题,但我找不到简洁的方法来表达问题。 问题是这样的: 我有一个由 IPC 事件触发的 BrowserWindow。当 BroswerWindow 打开时,它会向主进程发送
我调用 dialog.showOpenDialog() 来查找文件夹的路径。但问题是这不会阻塞 mainWindow。当标准路径选择 GUI 出现时,程序必须在路径选择完成后才能继续工作。谷歌搜索并意
在 electron.service.ts 的文件夹 providers 中,我有代码: import { Injectable } from '@angular/core'; // If you i
我第一次在我的 MacBook 上试用 Electron,因为我想要一个可以在其中编写桌面应用程序的环境。在退休之前我是一名程序员,使用过各种语言,但没有太多 javascript。 我正在浏览在线教
我的应用程序是全屏游戏的叠加层(alwaysOnTop),当用户单击我的叠加层时,它会获得焦点并在他们的游戏顶部显示任务栏。集中注意力很好,但我不能显示任务栏。 它在 BrowserWindow do
如果我的 Electron 应用程序打开和关闭了许多BrowserWindow,那么每个应用程序是否都具有唯一的ID? 因此,在我的应用一次运行中,如果我打开一个BrowserWindow并关闭它,然
我希望我的主窗口是屏幕的100%,而不是全屏,并且不能调整大小。 const electron = require('electron'); const url = require('url'); c
刚刚开始使用 Electron,我希望能够使用 loadURL 加载页面,但不替换整个页面。 这里的想法是如何使用像部分/模板这样的东西,这样我就可以在顶部和底部拥有一致的布局,但将不断变化的内容引入
请问有没有动态设置位置或将浏览器窗口移动到右下角的方法? BrowserWindow.setPosition(x, y) 最佳答案 您可以使用 the screen API ,并使用 fixed wi
有没有办法在 electron 中关闭 BrowserWindow 时返回值? 充其量我希望有一种方法可以从关闭事件中获取变量: win.on('closed', function(variables
当我创建一个新的 BrowserWindow 并使用 loadURL 在渲染器中使用一个 html 文件时,我猜在加载 css 之前我可以看到一闪而过的无样式内容半秒钟。 window.loadURL
我正在创建多个 UI 测试,而不是打开 Microsoft.VisualStudio.TestTools.UITesting.BrowserWindow 的新实例,我想检查 BrowserWindow
问题 是否有可能在 Electron 中制作一个BrowserWindow,透明和模糊?因为它模糊了所有背景内容,包括应用程序和墙纸。 如果可能的话,我将如何做到这一点? 例子 这是我试过的一些代码。
const BrowserWindow = require('electron') const win = new BrowserWindow({ width: 800, height: 600 })
我正在使用 BrowserWindow.loadURL("http://google.com") 在 ElectronJS 中加载页面。稍后在我的应用程序中,我需要通过一些哈希值(例如 http://
我对 Electron 、nodejs 和 javascript 很陌生,但我一直在稳步学习,取得了不错的结果,但我在这里遇到了一些障碍,并且没有找到类似的问题。然而,我确实找到了一个有人以相同方式使
我想从渲染进程中创建一个“Worker”BrowserWindow。工作进程将进行一些长时间运行的计算并定期返返回告。 看起来我可以使用 remote 模块在渲染器进程中执行此操作,而不是直接在主进程
我想知道BrowserWindow位于两个或多个屏幕上。 我猜 Electron API 没有给出方法。我怎样才能做到这一点?有什么办法吗?? 最佳答案 没有直接的方法可以实现这一点。但是以下绝对可以
我是一名优秀的程序员,十分优秀!