[Codeception] amOnPageメソッドの挙動の食い違いに泣かされる

振る舞いテスト(Acceptance Testing)の動作検証中にめっちゃくちゃハマってしまったのでメモっておきますorz

 

複数サイトにまたがってアクセスするので、受け入れテストスイートの設定ファイル(acceptance.suite.yml)内のurl欄を空欄にしたうえで、以下のようなテストコードを書きました。

このコードを、PhpBrowser上で動かすと普通に動くのですが、Firefox上で動かすとエラーが出てしまいます。

一見どういう意味なのか分からないのですが、「codecept run –debug」コマンドで動作の内容を見ながら確認すると、GET周りで変な挙動が……

なぜかURLの頭に「/」がついてる!

まぁamOnPage()は相対URL用のメソッドだから、スラッシュが頭についちゃうんでしょうかね。
amOnUrl()を使ってみたら問題なく動きました。

でもPhpBrowserでは普通に動いてしまうのは紛らわしい……(´・ω・`)

[laravel] 既存のユーザー情報を「認証済み」にしてテストケースを進めたい

Webアプリケーションを作ってると、目的の画面へ行ってアサートを走らせる前に、必ずユーザー認証を済ませて置かねばならないケースが多々あります。というかそんなパターンが大多数なんじゃないかと思わなくもない……

Laravelさんはそのへんもぬかりなく、actingAs()メソッドで簡単に実現してくれます。

以下リファレンスから引用。

でも、リファレンスの例文通りに動かすと、認証用にユーザーを作り、DBに書き込んでから動かしているみたいで、なんというかめんどくさいです(´・ω・`)

俺の場合はSeederで予めユーザーデータを定義してあるので、できればそっちを使ってテストしたいんですよね……。
そういう時は↓のように書くといけるみたいです。

Eloquentのfindメソッドで取ってくるだけ。actingAsメソッドの引数は、Authenticatableインターフェースが実装されていればなんでもいいので、こんな書き方でいけるみたいです。

ちょーかんたん。

ヤマト宅急便のお届け予定日数の一覧を作ってみた

ヤマトのお届け予定日検索が使いにくい・・・
料金・お届け予定日検索(宅急便)|ヤマト運輸
時間帯レベルまで細かく出してくれるのはいいんだけど、いちいち郵便番号を入れなきゃならないから、いろいろな地域を大まかに見るようなことはできないんですよねー。

佐川急便の予定日検索みたいに、日本地図でざっくり出してほしいですね。日数で表示されるから、個人的にはめっちゃ使いやすいんですよね。

……そんなわけで、その地図を出す素を作ってみました。
今日のところは力尽きたので、地図にするのはまた後にします( ・`ω・´)

yamato_otodoke_nissu

ファイルの中身は、各都道府県の県庁所在地の郵便番号を元に、上記お届け予定日検索を実行して出てきた日数をリストアップしてあります。
文字コードShiftJISのCSVファイルなので、エクセルあたりで開いてみるといいと思います。

48都道府県の2乗だから、検索回数は2304回!死ぬorz
流石に人力は腕がお亡くなりになってしまうのでSeleniumさんにやってもらいました(´・ω・`) テスト以外でも大活躍ですぜ!!