ale*_*cxe 14 javascript python testing unit-testing jasmine
故事:
在Python内置unittest框架中,通过assertAlmostEqual()方法实现了"近似相等"断言:
x = 0.1234567890
y = 0.1234567891
self.assertAlmostEqual(x, y)
Run Code Online (Sandbox Code Playgroud)
其中要检查的小数位数是可配置的.
而且,还有一个numpy.testing.assert_almost_equal()也适用于浮点数组:
import numpy.testing as npt
import numpy as np
npt.assert_almost_equal(np.array([1.0,2.3333333333333]), np.array([1.0,2.33333334]))
Run Code Online (Sandbox Code Playgroud)
问题:
如何在JavaScript/Jasmine中为浮点数和浮点数组成一个"几乎相等"的断言?
ken*_*ytm 15
对于单个浮动,请使用toBeCloseTo:
expect(x).toBeCloseTo(y, 7)
Run Code Online (Sandbox Code Playgroud)
对于一个float数组,你可以做的最好是循环它并调用toBeCloseTo每对元素(或编写自己的匹配器).请参阅期望一个浮点数数组靠近Jasmine中的另一个数组.
您可以为float类型添加自定义相等性测试程序.它将在单个float和数组中的每个float上调用:
beforeEach(function () {
jasmine.addCustomEqualityTester(function floatEquality(a, b) {
if (a === +a && b === +b && (a !== (a|0) || b !== (b|0))) { // if float
return Math.abs(a - b) < 5e-8;
}
});
});
it("Should compare array of floats", function() {
expect([0.1234567890]).toEqual([0.1234567891]); // OK
expect([0.12345]).toEqual([0.12346]); // FAIL
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2766 次 |
| 最近记录: |