AVA はインスタンス メソッド 'this' のバインドを解除しているようです。
class Person {
constructor(name) {
this.name = name;
}
sayMyName() {
const name = this.name;
return new Promise(function (resolve, reject) {
reject(new Error(name));
});
}
}
test('test', async (t) => {
const person1 = new Person('Bob');
const error = await t.throws(person1.sayMyName);
t.is(error.message, 'Bob');
});
上記のコードの場合、次のようになります。
85: const error = await t.throws(person1.sayMyName);
86: t.is(error.message, 'Bob');
87: });
Difference:
"CannBot read property \'name\' of undefinedb"
この約束を次のように手動でバインドしようとしました: person1.sayMyName.bind(person1) ですが、これもうまくいかないようです。