- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在尝试测试某个 CustomEvent 是否已在某个类中分派(dispatch)时收到误报。我正在使用 jest.spyOn
测试通过 dispatchEvent
传递的特定 CustomEvent称呼。这是调度自定义事件的函数:
someFunction() {
this.dispatchEvent(
new CustomEvent('myEvent', {
bubbles: true,
composed: true,
detail: { someProperty: this.localProperty },
})
);
}
并且测试尝试以这种方式验证预期事件:
let container;
beforeEach(() => {
container = new SomeClass();
});
it('dispatches correct CustomEvent when someFunction is called', () => {
const dispatchEventSpy = jest.spyOn(container, 'dispatchEvent');
container.localProperty = '123';
const customEvent = new CustomEvent('myEvent', {
bubbles: true,
composed: true,
detail: { someProperty: 'wrong value' },
});
container.someFunction();
// TODO: I expect the below to fail because the format passed in the custom event does not match the format in the container.
expect(dispatchEventSpy).toHaveBeenCalledWith(customEvent);
// If I use toBe instead and check the argument passed to dispatchEvent this way it fails even when they are the same. So I either get a false positive or a false negative.
expect(dispatchEventSpy.mock.calls[0][0]).toBe(customEvent);
});
最佳答案
如果你在 jest 单元测试中记录这个对象,你会看到结果非常相似:
console.log(new CustomEvent("myEvent", {
bubbles: true,
composed: true,
detail: { someProperty: "123" },
}));
console.log(new CustomEvent("myEvent", {
bubbles: true,
composed: true,
detail: { someProperty: "error" },
}));
就我而言,两者的结果都是: { isTrusted: [Getter] }
expect(dispatchEventSpy).toHaveBeenCalledWith(customEvent);
您可以使用 dispatchEventSpy.mock.calls[0][0] 访问预期对象以获得更好的断言:
expect(dispatchEventSpy.mock.calls[0][0].detail).toEqual({
someProperty: "123",
});
expect(dispatchEventSpy.mock.calls[0][0].bubbles).toEqual(true);
expect(dispatchEventSpy.mock.calls[0][0].composed).toEqual(true);
关于javascript - 使用 CustomEvent 对 dispatchEvent 进行开 Jest 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64784736/
好吧,自从几天前的最后一个问题以来,我已经取得了一些进展,但在 Javascript 和 Three.js 方面我还是很陌生,并且正在遇到这个新问题。 我正在尝试将从 OBJ 文件加载的一些 thre
我知道我的问题并不新鲜,但是我在这里和Internet上找到的所有解决方案均不起作用:(或者,我做错了什么。 我需要在Dart和JS之间建立通信,并且我想使用事件,因为这个想法看起来很简洁。 因此,我
我创建了一个自定义元素: const templ = document.createElement('template'); templ.innerHTML = ` `; class SlideBu
我需要创建一个自定义事件,它将一些数据传递给事件监听器。我已经创建了一个像下面这样的 自定义事件 var event = new CustomEvent('store', { 'detail': ob
我正在尝试创建自定义 Javascript 事件。该事件正常运行并触发,但我传递给它的“详细信息”对象不可用。 这是我用来创建和发送事件的代码: var double_tap = new Custom
我在 azure Insights 中以自定义事件格式保存了数据。现在,我需要在我的网站中创建一个仪表板页面,该页面将从见解中提取数据并显示该数据的图表。问题是我如何根据自定义事件中保存的数据过滤数据
我在 azure Insights 中以自定义事件格式保存了数据。现在,我需要在我的网站中创建一个仪表板页面,该页面将从见解中提取数据并显示该数据的图表。问题是我如何根据自定义事件中保存的数据过滤数据
我在一个函数上有一个 CustomEvent 参数,我想检索事件的名称,即它是用 (new CustomEvent('foo')) 构造的字符串 为了引用 https://developer.mozi
我正在尝试将 CustomEvent 合并到我的工作流程中。但我需要此事件以两种方式进行通信:脚本将事件发送到文档,并且它应该响应相同的发起者。 我试过以下方法: ev = new CustomEve
每次单击附加不同数据的 div 时,我都需要触发一个自定义事件。 这是我的代码的一个简化变体 (JSFiddle): click me function selectItem(id) { v
我想测试是否CustomEvent constructor支持。 var ev; if (/* CustomEvent constructor supported? */) { ev = ne
我有以下代码块 $(function(){ var TaskEvent = new CustomEvent('TaskAdded',{ detail: {
我正在尝试为也支持 IE8 的 CustomEvent 制作一个 polyfill,这就是我想出的: if (typeof window.CustomEvent === "function") {
IE 不支持CustomEvent() 构造函数。是否可以使其至少与 IE11 兼容?它适用于其他浏览器,例如 Chrome 和 Firefox。 例如:- var SpecialEvent = ne
来自document.createEvent The createEvent method is deprecated. Use event constructors instead. 在bootst
根据(我的理解)documentation ,如果任何事件监听器在处理事件时调用 Event.preventDefault() 方法,则 dispatchEvent 方法应返回 false。但如果我尝
我正在尝试在 vanilla javascript 中创建自定义事件,但并不真正了解如何触发它。据我所知有jQuery方法trigger('customEvent') ,但它是如何在 Vanilla
我使用了很多自定义事件, typescript 静态检查中的一个盲点是 CustomEvent 中的细节类型.由于这个盲点,很多重构都会受到影响。为了弥补,我为 CustomEvent 创建了一个全局
我试图从 JS 中调用 Angular 函数,但是传递给 Angular 的参数未定义。我缺少什么?理想情况下,我也想从调度事件返回结果。我应该使用更好的解决方案吗? JS函数 var event
如何测试 CustomEvent 是否在 jasmine 中调度?当我尝试运行以下代码时,出现错误:“ReferenceError:找不到变量:CustomEvent”。 function testC
我是一名优秀的程序员,十分优秀!