Angularjs 如何模拟$window.height()?
我有一个指令,它包含Angularjs 如何模拟$window.height()?,angularjs,unit-testing,jasmine,karma-jasmine,Angularjs,Unit Testing,Jasmine,Karma Jasmine,我有一个指令,它包含$window.height()和$window.scrollTop()。如何为$window.height()和$window.scrollTop()创建模拟?只有这样,我才能为该指令编写测试。您可以在每个块之前在中使用$provide,指定一个模拟的$window对象来代替$window 下面是一个使用模拟$window对象测试名为“myService”的角度服务的示例: describe("thingToTest", function () { "use str
$window.height()
和$window.scrollTop()
。如何为$window.height()
和$window.scrollTop()
创建模拟?只有这样,我才能为该指令编写测试。您可以在每个块之前在中使用$provide
,指定一个模拟的$window
对象来代替$window
下面是一个使用模拟$window
对象测试名为“myService”的角度服务的示例:
describe("thingToTest", function () {
"use strict";
var service,
$window;
beforeEach(module("myModule"));
beforeEach(function () {
$window = {
height: function () { //do something },
scrollTop: function () { //do something }
};
module(function ($provide) {
$provide.value('$window', $window);
});
inject(function ($injector) {
service = $injector.get('myService');
});
});
describe("myTests", function () {
//tests here
});
只是提醒一下:模仿$window
有时会破坏一些依赖于该服务的内部代码。在这种情况下,最好注入$window
服务,并模拟测试所需的方法。@MichaelBenford我在这里做了一个示例,以更好地了解问题:。如何解决此问题?窗口
对象既没有height()
方法,也没有scrollTop
方法。我猜您正在将其包装到jQuery对象中。