小编use*_*851的帖子

Javascript:'window'未定义

好吧,我正在尝试学习一些JavaScript,但这是一个痛苦.

以下代码给了我很多麻烦:

window.onload = function () {
    for ( var i = 0; i < seats.length; i++) {
        for ( var j = 0; j < seats.length; j++) {
            document.getElementById(getSeatId(i, j)).onclick = function(evt) {
                getSeatStatus(getSeatId(i, j));
            };
        }
    }
    document.getElementById("search").onclick = findSeat;
    document.getElementById("male_search").onclick = findMaleSeats;
    initSeats();
};
Run Code Online (Sandbox Code Playgroud)

它来自外部js文件,它是链接到页面的唯一文件.findSeat,findMaleSeats,getSeatId,initSeats都是稍后在文件中定义的.当我双击此文件时,我收到以下错误(请注意,这是我的母语翻译):

Windows脚本主机错误:未定义"窗口"代码:800A1391

我已经尝试将代码移动到文件中的其他位置,尝试为window.onload和许多其他东西分配不同的函数(甚至是空函数).看来我的电脑似乎不知道是什么窗口.如果我尝试在浏览器中打开HTML,则无法加载(正如人们所期望的那样).

有人知道这有什么问题吗?

javascript dom

6
推荐指数
3
解决办法
8万
查看次数

涉及随机数的单元测试算法

我正在写一些关于分形和随机地形生成的代码.具体来说,我现在使用的是Diamond-Square算法.对于那些不知道的人,它基本上获得了四个值的平均值,并且每一步都添加一个随机数.我将如何测试结果?我应该使用已知种子并手动计算平均值加上随机值,或者是什么?相反,我应该使用随机数计算代码中的结果吗?或者还有另一种方式吗?此外,一些关于逆过程(也就是TDD,代码前的写入测试)的想法将非常感激.

testing random tdd unit-testing fractals

4
推荐指数
1
解决办法
325
查看次数

单元测试私有方法似乎使整个解决方案更容易

假设有一个实用程序类(没有数据),其中包含一个复杂的(如难以测试的)公共方法.它使用随机数生成,返回大量数据和有趣的东西.但是,如果您在小型私有方法中实现它,每个私有方法都很容易测试,因此整个过程更容易测试.从应用程序的角度来看,只有大方法需要公开,而另一方面应该是私有的.然而,测试私有方法会导致更容易测试类.我该如何处理这个问题?

testing tdd unit-testing private-methods

3
推荐指数
1
解决办法
150
查看次数

是否拆分类以便更容易测试可接受的行为?

我知道这是一个主观问题,但我找不到答案.不过我会详细说明:

我有一个具有许多配置方法的类,因此您可以运行具有不同设置的特定算法.正确配置后,只需调用方法"generate()",它就会返回一个填充的2d数组.这是难以测试的方法.这很难,因为它返回一个高度图,其中包含随机性和大量数据.一般来说,我会拆分它,但这会打破封装,因为在实践中数据和算法的步骤也会因同样的原因而改变,而且没有人会使用另一个的separeted.我知道我可以模拟随机性(我实际上正在做),但无论哪种方式,编写测试都是太多的数据(例如,仅32到32的地图在单个测试中需要1024个断言) .除此之外,生成一张大地图最多可能需要3到4秒,这在测试环境中显然不太好.

此外,我首先尝试将数据与算法分开,并使算法纯功能(无数据,仅参数).虽然这是可测试的(因为我拆分算法),这导致大量的参数被传递到周围,并且是一个相当程序化的代码.

所以我不知道如何在这里进行.拆分类使得测试和理解更容易,但也破坏了封装非常糟糕.我会很感激这个主题,无论是实践的还是理论的.

提前致谢.

编辑:这是我编写的代码,类似于程序.

JavaRandom,Attenuation和RandomNumberProcessor是我应该保持在一起的类.

这是算法使用的数据:

package noise;

import noise.attenuation.DefaultAttenuation;

public final class DiamondSquareSettings {

    public static final class Builder {

            private static final double NEVER_ASSIGNED = 1.1;
            private static final long DEFAULT_RNG_SEED = 33609606l;
            private static final JavaRandom DEFAULT_RANDOM = new JavaRandom(DEFAULT_RNG_SEED);
            private static final double DEFAULT_RANGE = 1;
            private static final Attenuation defaultAttenuation = new DefaultAttenuation(0.7);

            private Random builderRandom = DEFAULT_RANDOM;
            private final double[] builderSeeds = {NEVER_ASSIGNED , NEVER_ASSIGNED , NEVER_ASSIGNED , …
Run Code Online (Sandbox Code Playgroud)

java tdd unit-testing noise-generator

2
推荐指数
1
解决办法
89
查看次数