似乎触发/在jquery事件上标准和自定义都不适用于对象标记.
这并不起作用:
var $test = $("<object>");
$test.on("test", function (){
console.log("jquery test handler");
});
$test.trigger("test");
Run Code Online (Sandbox Code Playgroud)
虽然它适用于其他html标签(尝试div,视频等).
Vanilla js解决方案的工作原理:
var test = document.createElement("object");
test.addEventListener("testV", function(e) {
console.log("vanilla test handler");
});
var event = new CustomEvent("testV");
test.dispatchEvent(event);
Run Code Online (Sandbox Code Playgroud)
jQuery ver.1.11.1
测试:http://codepen.io/anon/pen/dPGoJg
问题:
鉴于我有方法装饰器,例如
class Service {
@LogCall()
doSomething() {
return 1 + 1;
}
}
Run Code Online (Sandbox Code Playgroud)
是否可以@LogCall在单元测试中模拟装饰器,这样它就不会被应用或应用模拟逻辑?
我正在寻找任何打字稿装饰器的通用解决方案,因为可以更新装饰器以检查window.disableLogDecorator标志或在测试期间将其关闭,但这不是可重用的解决方案。
当然,我们的用例比提供的示例要复杂得多 - 我们将@memoizeSelector其应用于ngrx/store选择器,因此仅在更新特定状态部分时才调用它们。由于我们在测试中模拟状态的方式,@memoizeSelector会破坏我们的测试,因此理想情况下我们希望禁用它。
angular ×1
decorator ×1
html ×1
html5 ×1
javascript ×1
jquery ×1
mocking ×1
typescript ×1
unit-testing ×1