AVAの話 #mentaicojs
-
Upload
hiroyuki-anai -
Category
Technology
-
view
1.342 -
download
1
Transcript of AVAの話 #mentaicojs
const delayHello = (msec, callback) => setTimeout(() => callback('Hello!'), msec);
// t.endが呼ばれるまでテストを停止しない test.cb(t => { delayHello(1000, message => { t.is(message, 'Hello!'); t.end(); }); });
test(t => { // resolveするのを待ってくれる return somePromise().then(result => { t.is(result, 'unicorn'); }); });
function* generatorFun() { // 実際はファイル操作やAPIリクエストなど const a = yield Promise.resolve('a'); const b = yield Promise.resolve('b'); return `${a}:${b}`; }
test(function* (t) { const message = yield generatorFun(); t.is(message, 'a:b'); });
import test from 'ava';
const promiseFun = () => Promise.resolve('Hello!');
test(async t => { const message = await promiseFun(); t.is(message, 'Hello!'); });
import test from 'ava'; // npm i [email protected] // ECMAScript Observableの実装 // https://github.com/tc39/proposal-observable import { Observable } from 'rxjs';
// test.cbは必要なし test(t => { t.plan(3); return Observable.of(1, 2, 3, 4, 5, 6) .filter(n => (n % 2 === 0)) // 2の倍数 .map(() => t.pass()); });
const maybeThrowError = () => Promise.reject(new Error('Hello, error!!'));
test(t => { return maybeThrowError().catch(err => { t.is(err.message, 'Hello, error!!'); }); });
// 意図せずPromiseがfullfillしてる const maybeThrowError = () => Promise.resolve('Invalid fullfilled'); // Promise.reject(new Error('...'));
test(t => { return maybeThrowError().catch(err => { // そもそもここに入らないので、 // パスしちゃう...orz t.is(err.message, 'Hello, error!!'); }); });
test(t => { // 毎度両ケース書くのは複雑 return maybeThrowError() .then(() => t.fail()) .catch(err => { t.is(err.message, 'Hello, error!!'); }) }); });
test(t => { t.plan(1); return maybeThrowError().catch(err => { // ここを通らないと、 // assertionの回数が合わないので落ちる t.is(err.message, 'Hello, error!!'); }); });