テストコードについて
使用ライブラリ
- バック(Rails Rspec)
- フロント(Vue.js test-utils/Jest)
- テスト(cucumber/capybara/webdriver)
■Rspec
- Rspec.describe "" do ...テスト前に書くこと
- it "xx" do ...固定値設定とか
- expect().to eq xx ...値の検証
- conrtext...機能でグルーピング
- before...テスト前の値のセット
- let(:params)...インスタンス変数の共通化
- subject ... is_expected ...テスト目標
- 以下の書式でテストコードを書いていく
RSpec.describe User do describe '#greet' do let(:user) { User.new(params) } let(:params) { { name: 'たろう', age: age } } context '12歳以下の場合' do let(:age) { 12 } it 'ひらがなで答えること' do expect(user.greet).to eq 'ぼくはたろうだよ。' end end context '13歳以上の場合' do let(:age) { 13 } it '漢字で答えること' do expect(user.greet).to eq '僕はたろうです。' end end end end
参考:使えるRSpec入門・その1「RSpecの基本的な構文や便利な機能を理解する
■test-utils
- テスト対象のコンポーネントをimportする
- const wrapper = mount(テスト対象)で対象コンポーネントをテスト可能状態にする
- const vm = wrapper.vmでインスタンスへのアクセス許可
- 以下の書式でテストコードを書く
it( "",() => {
expect(wrapper().toBe())
})
実例
// 要素の存在を確認することも簡単です
it('has a button', () => {
expect(wrapper.contains('button')).toBe(true)
})
■Jest
テストランナー
function sum(a, b) {
return a + b;
}
module.exports = sum;
---
const sum = require('./sum');
test('adds 1 + 2 to equal 3', () => {
expect(sum(1, 2)).toBe(3);
});
参考:Jest
■Capybara
RubyのUIテスト
テストドライバーの設定
テストしたい要素:DOM-idを指定
アクセス->要素の検索->要素の値を変化->要素の状態を確認
■cucumber
・Cucumberの構造
Cucumberを利用するために、記述すべきファイルは2種類あります。
①Featureファイル
→テストのシナリオを書くファイル
②Stepファイル
→シナリオの動作を定義するファイル
・Cucumberを使用したテストシナリオ
Cucumberのテストシナリオは、GherkinというDSLで書きます。
主に「Given、When、Then」というステップがあります。
- Given:前提
- When:処理内容
- Then:その結果(に対する検証)