の配列私はこの1つのようなコードを持っている:モカ、配列と範囲
let Foo = class Foo {
constructor(a) {
this.a = a.slice();
}
bar() {
this.set(0, 1, [1]);
this.set(1, 1, [1]);
}
set(x, y, n) {
this.a[x][y] = n;
}
get() {
return this.a;
}
};
module.exports = Foo;
だから、プロパティwhisは、配列の配列、それを変更set
機能、およびset
を使用する機能ですとゲッター。私が最初にsource
変数を宣言し
const Foo = require('./../foo.js'),
source = [[1, 2, 3], [4, 5, 6]],
chai = require('chai'),
expect = chai.expect;
describe('Foo',() => {
describe('bar',() => {
it('expect to modify the array',() => {
let foo = new Foo(source);
foo.bar();
expect(foo.a).to.deep.equal([[1, [1], 3], [4, [1], 6]]);
});
});
describe('get',() => {
it('expect to return the array',() => {
let foo = new Foo(source);
expect(foo.get()).to.deep.equal([1, 2, 3]);
});
});
});
これで、新しいFoo
各テストを構築するためにそれを使用する:
は今、私はモカと、ユニットテストを書きます。
しかし、結果はbar
テストget
テストでfoo
のプロパティを変更すること...です:
Foo
bar
✓ expect to modify the array
get
1) expect to return the array
1 passing (19ms)
1 failing
1) Foo get expect to return the array:
AssertionError: expected [ [ 1, [ 1 ], 3 ], [ 4, [ 1 ], 6 ] ] to deeply equal [ 1, 2, 3 ]
+ expected - actual
[
- [
- 1
- [
- 1
- ]
- 3
- ]
- [
- 4
- [
- 1
- ]
- 6
- ]
+ 1
+ 2
+ 3
]
at Proxy.assertEqual (node_modules/chai/lib/chai/core/assertions.js:1020:19)
at Proxy.methodWrapper (node_modules/chai/lib/chai/utils/addMethod.js:57:25)
at Context.it (test/foo.js:20:30)
モカテストに匿名関数の代わりに、矢印機能を使用すると、何も変更はありません、splice
を使用してソースを値でコピーすることもできます。
私は何かを忘れましたか?どういうわけか、私は何とか両方のプロパティーの同じ参照を同じ配列に帰していることは明らかですが、私はどのように、そしてもっと重要なのか、私は別々に、foo
を作成する方法を理解することができません。
@Jonasw実際のコードでは、チェックが、それはtが:)失敗doesnのを保証するために作られています – DrakaSAN