2014-09-01から1ヶ月間の記事一覧

AngularJSでネストしたコントローラをテストする

前提 AngularJSでコントローラをネストして階層化すると、子コントローラ側から親コントローラのスコープを利用可能になる。 問題 子コントローラのユニットテストを書こうとした場合に、子コントローラ側で親コントローラのプロパティやメソッドを使用して…

AngularJSのフォームで投稿後に再利用する際手付かずの状態に戻したい

例えば記事へのコメント投稿後に、そのフォームを再利用する際に、データを初期化しただけだとエラー表示が出てしまう。 ので、$dirtyがfalse($pristineがtrue)の状態に戻したい。 いわゆるブログのコメント投稿とかのよくあるやつ。 form.FormControllerの$…

RailsのResourcesでNestしてshallow: trueしたresourcesをAngularJSの$resourceで扱う

例えばこういう感じのresourcesを定義したとする。 APIの例。newとeditは省いた。 # routes.rb namespace :api, defaults: { format: :json } do resources :reports, shallow: true do resources :comments, except: [:new, :edit] end end 定義されるルー…

AngularJSで$sceを使ってるフィルタなんかのテスト

$sceをDIしてるやつ、例えばこちらのようなののテストを書く場合。 # newlines_spec.coffee "use strict" describe "Filter: newlines", -> beforeEach module "myApp" newlines = {} beforeEach inject ($filter) -> newlines = $filter "newlines" it "\nを<br />…

RailsでつくるAPIサーバのドキュメントを自動生成してくれるAutodocを使っていて気をつけること

Autodocとはなんぞやという方はこちらの記事を参照。 公式はこちら で、大変便利なAutodocだけど、注意点が2つ。 まず一点目はRspc3で動かない点。プルリクが上がってるが、取り込まれてない。 なので、forkして使ってる人が結構いる感じ。 2点目、通信が…

AngularJSのProtractorでngMockE2Eの$httpBackentを使ってテストを書く際に気をつけること

まだ理解が浅い模様。 注意というかexpectとwhenの違いの話。 前提 AngularJSにはngMockE2EというE2E用のモックが用意されており、こちらを使用することにより、サーバを用意しなくてもモックでテストが書ける。 * ngMockE2Eの$httpBackendにはngMockの$http…

AngularJSでInterceptorでHeaderを付与するようなケースのテスト

例えば$httpのリクエストをインターセプトして、Authorizationヘッダーにトークンを付与するInterceptorを作成したとする。 この場合、このInterceptorのサービスをどのようにテストするのがよいのか? で、調べたら大変素晴らしい記事があったのでそちらを…

UI-Bootstrapのmodalのテストで、$modalInstanceを使うControllerをテストしようとして、$modalInstanceをinjectしようとするところでUnknown providerとエラーが出る

公式のサンプルでいうと、ModalInstanceCtrl部分のテスト。 // modal-demo.js var ModalDemoCtrl = function ($scope, $modal, $log) { $scope.items = ['item1', 'item2', 'item3']; $scope.open = function (size) { var modalInstance = $modal.open({ te…

Rails4をJSON APIとして構築していてCreateのAPIに関連のID一覧をparameterとしてPOSTしてはまった

前提 1.Railsのwrap_parametersはJSONをRailsへ送った時にルート要素を省いてくれる。というか、省いて送ってもよしなにwrapしてくれる。 Railsのwrap_parametersは何をしてくれるのか? 2.has_manyを定義するとrelation_ids,relation_ids=というメソッドが…

grunt-wiredep使用の環境でjquery-uiのdatepickerのロケールとCSSを含みたい

grunt-wiredep使用の環境でAngularJSのui-dateでロケール指定したい&jquery-uiのCSSを当てたいと。 bower.jsonに追加してbower install bower.json { "dependencies": { "angular-ui-date": "latest" } } ui-dateがjquery-uiに依存しているので、jquery-ui…

grunt-wiredep使用の環境でmomentの日本語ロケールファイルを含めたい

より正確にいうとgrunt-wiredep使用の環境でangular-momentでロケール指定したい、ということ。 angular-momentをインストールする % bower install angular-moment --save これでmomentも依存関係でインストールされて、wiredepで差し込まれてめでたしめで…

ProtractorでngMockE2Eを読み込んでモックを使ってテストしている場合、build時にはngMockE2Eを除外したい

yeomanのgenerator-angularで作ったプロジェクトで、grunt-wiredepを使っているので、素直にE2Eテストでangular-mocksを使おうとすると、bower.jsonのdevDependenciesからdependenciesに移す必要がある。 // bower.json { "name": "MyApp", "version": "0.0.…

grunt-wiredep使用の環境でangular-i18nをbowerでインストールしたら注入できないとメッセージ

AngularJSリファレンス購入して読了。これは良い本。 で、フィルタのi18nの項をみて、早速いれてみたら、grunt-wiredepを使っているGruntのタスクで注入出来ないとメッセージが出て、htmlファイルのコメントの間にi18nへのscriptタグが挿入されない。 ちなみ…

Rails 4.1でhas_many :throughのuniq: trueはなくなってた

activerecord - Deprecation warning when using has_many :through :uniq in Rails 4 - Stack Overflow