Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 如何模拟$window.height()?_Angularjs_Unit Testing_Jasmine_Karma Jasmine - Fatal编程技术网

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对象中。