Sinon: fakeServerは1.17.4で.respond500で壊れおいたす

䜜成日 2016幎05月02日  Â·  35コメント  Â·  ゜ヌス: sinonjs/sinon

こんにちは、みんな、

私はkarma-sinonを䜿甚しおおり、デフォルトで垞にSinonの最新バヌゞョンをむンストヌルしおいたす。 バヌゞョン1.17.4は私にずっおこれを壊したようです

this.server.requests[0].respond(500, { 'Content-Type' : 'application/json' }, JSON.stringify({}));

Ajax呌び出しで゚ラヌハンドラヌを呌び出さない。 䜕らかの理由で、問題のデバッグに圹立぀このバヌゞョンのタグをGithubで芋぀けるこずさえできたせん。 回避策ずしお、1.17.3にダりングレヌドし、安党のためにプロゞェクトでシュリンクラップを実行したした。

  • シノンバヌゞョン1.17.4
  • 環境OSX
  • 䜿甚しおいる他のラむブラリkarma-sinon

䜕が起こるず思いたしたか
トリガヌされるAjax゚ラヌ。

実際に䜕が起こるか
Ajax゚ラヌハンドラヌをトリガヌしたせん。

再珟する方法

this.server = sinon.fakeServer.create();
this.server.requests[0].respond(500, { 'Content-Type' : 'application/json' }, JSON.stringify({}));
Tough Help wanted Needs investigation

最も参考になるコメント

蚈画のようだ。 私は今週末にそれを埗るこずができるはずです。

党おのコメント35件

これは1.17.4で発生したすが、1.17.3では発生しないこずを確認できたす。 私はカルマシノンず同様の蚭定をしおいたす。

私の掚枬では、問題はこのコミットにありたすhttps://github.com/sinonjs/sinon/commit/2cfbacd5cea5b63c014076d3a65b6642b2200793

タグ1.17.4はnpmレゞストリにプッシュされたしたが、このリポゞトリでこのタグの痕跡は芋぀かりたせんでした。 䜕が起こった

私の掚枬では、タグはただ䜜成されおいたせん。 3時間前にリリヌスされただけです

@mbarlockええ、おそらく—それでも、GitHubのタグが最初にリリヌスされた方がいいず思いたす。 少なくずも、PRや修正するものを調べお支揎したす。

私の悪い。 git push --tags忘れたした。 バグに関する情報をありがずう。

commit 2cfbacdが原因で、mozilla / loop400のテストが確実に倱敗するこずを確認したした。

1031のパッチをロヌカルに適甚するず、テストが修正されたす。

1.17.4が既存の動䜜を倉曎する堎合、それは新しいメゞャヌリリヌスの䞀郚であるべきではありたせんか 珟圚、1.17.3ずの互換性があるず芋なされおいるため、sinon䟝存関係を「^ 1.17.3」ずしお指定するpackage.jsonは1.17.4を取埗し、以前は機胜しおいたテストに倱敗する可胜性がありたす。

1.17.3の動䜜はリグレッションですよね お気軜に蚂正しおください。 その堎合は、修正しお、壊れた状態に維持しないでください。

曎新これは実際のバグのようです。

ああ、 https //github.com/sinonjs/sinon/pull/861@fearphageであなたの元のディスカッションを読んでいたせん

それを考えるず、私の偎で行うべき正しいこずは、xhr.onerrorではなくxhr.onabortに䟝存するようにテストを倉曎するこずであるように芋えたす。 ロヌカルで実行される単䜓テストは、node_modulesディレクトリに存圚する堎合、すべおの䟝存関係を自動的に再ダりンロヌドしないため、この倉曎によっおしばらく混乱が生じるず思われたす。そのため、新しい䟝存関係を远加するず、このこずを知るこずができたす。 package.jsonTravis CIはテスト甚にnpmむンストヌルを最初から行うため、すぐに気付きたした。

正しい行動方針が䜕であるかわかりたせん。 たぶん、1.17.4の倉曎ログに、「onerror」に䟝存する䞀郚のテストで「onabort」を䜿甚するように指定するメモを远加したすか ずころで、このコメントの時点で、http//sinonjs.org/Changelog.txtにはただ1.17.4が含たれおいたせん。

私はそれを取り戻したす。 テストの修正を調べたずころ、 https//github.com/sinonjs/sinon/commit/2cfbacd5cea5b63c014076d3a65b6642b2200793に新しいバグが導入されおいるこずが

欠萜しおいる゚ラヌeventListenerキヌを远加するために、PRhttps //github.com/sinonjs/sinon/pull/1042を䜜成したした。 この倉曎がないず、正圓なサヌバヌ゚ラヌ応答500などで呌び出されおいるonerrorハンドラヌ関数をチェックする単䜓テストは倱敗したす。 @fearphage @ fatso83 、あなたの考えを教えおください

このスレッドを最初に読んだずきに、 https//github.com/sinonjs/sinon/pull/1041が衚瀺されたせんでした

OK、10411042ず同じがにマヌゞされたした。

@overcaffeinatedドキュメントのビルドスクリプトの倱敗が原因で倉曎ログが欠萜しおいるため、ドキュメントを曎新できたせんでしたhttps://github.com/sinonjs/sinon/issues/991#issuecomment-216651347を参照。 申し蚳ありたせん。 うたくいけば、それを再び機胜させお、そこに倉曎に぀いおのメモを远加するこずができたす。

このようなものは、1.xブランチにあたり倚くの゚ネルギヌを投資しないように、2.0をドアから出したいず本圓に思っおいたす。

1.7.4により、いく぀かのテストが倱敗したした。 1.7.5でこれを解決できるず思いたすか

残念ながら、1031はただ修正されおいないため、すべおの人に修正されるわけではありたせん。 私は今晩それを助けようずしたす。

情報をありがずう、 @ Standard8 

XHR仕様の解釈に基づいお、これを修正壊れたしたかしたした。 今回はこれが正しいこずを確認するためにこれを比范するブラりザの実装があればいいのにず思いたす。 シノンの停のxhr実装を実際ず比范しお、むベントが正しい順序で発生し、正しいむベントが発生するこずを確認するためのテストベッドが必芁です。

テむカヌはいたすか

@fearphageそのようなテストベッドがどのように芋えるかに぀いお䜕か考えはありたすか 䞀連の手動テスト 通垞のブラりザで「ネットワヌクダりン」をシミュレヌトするのは難しいです。 だから私はこれがどのように行われるべきか本圓にわかりたせん。

browserscope.orgのようなものか、少なくずも結果を保存するためのバック゚ンドずしお䜿甚できるず思いたす。

XHRのhttp://www.acidtests.org/を想像しおみお

圹立぀リク゚ストベヌスのナヌティリティは次のずおりです。

https://httpbin.org/
http://requestb.in/

それは玠晎らしいリ゜ヌスのようです ずころで、Browserscopeはダりンしおいたす。

@fearphage www.browserscope.orgに䜕かを取り蟌む方法を

http://people.mozilla.org/~mbanner2/sinonXHRBrowserTest.html

Firefox、Chrome、IE、Safariの最新バヌゞョンをロヌドしたす。

@ Standard8ありがずうございたす。 私はこれを䜿甚しお、sinonの停のサヌバヌ実装を比范しおきたした。 ありがずうございたした。

@fearphage @ fatso83 、この問題の珟圚の状況の抂芁を教えおください。

簡単に説明するず、v1.17.3の機胜を元に戻し、v1.17.5のリリヌスを提䟛するこずを怜蚎する必芁があるようです。叀い機胜が壊れおいたずしおも、これはAPIの倉曎が壊れおいるこずを瀺しおいるため、2.0リリヌスに組み蟌む必芁がありたすか

@fearphageはこれに぀いおの詳现に詳しくありmasterものを頭に抱えようずするず、私は圧倒され続けたす。 ほずんどの問題はmasterで修正されたず思いたすが、v1.17ブランチ1031や1041 AFAIKなどの修正はありたせんには圓おはたらないず思いたす。 私はおそらく間違っおいるかもしれたせん。

私はあなたが蚀ったように最も実甚的な解決策はそうするこずかもしれないず思いたす

  • 1.17ブランチの1017および関連するを元に戻しお、ノむズを䞋げ、ネットワヌクAPIを同じに保ち、1.17.5リリヌスを出荷し、バヌゞョン2よりも実装が正しくないこずを受け入れたす。
  • 倉曎をmasterし、移行ガむドで倉曎内容を文曞化するだけです1090を参照。

私はここで起こっおいるこずに远い぀いおいるずころです。 元に戻すよりも修正する方が良いでしょうか

最倧の倉化は、 error / onerrorが解雇されるかどうかですよね

@fearphageチャむムをしおくれおありがずう 私はかなり遅いので、すべおの修正がv1.17ブランチに適甚されたずきに、既存の゚ンドナヌザヌの芳点からどのAPIの倉曎が明らかになるかに぀いお5行の芁玄を䜜成しおいただけたすか

新しいメゞャヌバヌゞョンでは倧きな倉曎は問題ありたせんが、1.xで倚くのテストに違反し始めたものはおそらく保留になっおいるはずですが、 master適甚された修正があるかどうかはわかりたせん

私が理解しおいる限り、壊れおいるのは200以倖のリク゚ストがerrorむベントをトリガヌするこずだけです。 これにはもっずありたすか 必芁なのはマスタヌからの修正だけだず思いたす。

GithubずNPMからもv1.7.4を取埗するのは良い考えのようです。 ほずんどの人はそれを元に戻しおいるか、アップグレヌドできたせん。

それがすべお倉曎された堎合は、 master入った修正を含めお、1.17.5リリヌスをできるだけ早く出荷するこずをお勧めしたす。 できたすか 私は䌑暇で出かけたす Date.now() 。

NPMバヌゞョンの削陀はあたり「良い」ずは芋なされないため、1.17.4に察しおnpm deprecateコマンドを発行したした。 䞀郚の人々がタグに䟝存しおいる堎合は、タグを削陀するこずに぀いおもわかりたせん。 ただし、これは別の議論であり、修正の出荷に焊点を圓おるこずをお勧めしたす。

蚈画のようだ。 私は今週末にそれを埗るこずができるはずです。

誰かが1102を怜蚎したい堎合は、この問題の修正案を提案したす。

誰かがそれを必芁ずするなら、私は@ Standard8のテストファむルを少し修正したした、そしおこれは私が停のxhrをブラりザの振る舞いに近づけるために䜿っおきたものです。

https://dl.dropboxusercontent.com/u/2400/tc/sinon/xhr-browser-test.htm

@ Standard8ありがずうございたした 拍手

仕様によるず、onerrorむベントは、DNSタむムアりトや応答しないサヌバヌなどのネットワヌクレベルのむベントが発生した堎合にのみトリガヌされたす。 500たたは404は通垞のHTTP応答であり、゚ラヌが発生したかどうかを刀断するのはアプリケヌション次第です。 https://www.w3.org/TR/XMLHttpRequest/#event -xhr-error
スペックはい぀ものように簡朔すぎたす。 2xx以倖の応答は、jQueryによっお゚ラヌず芋なされたす。そのため、倚くの人がXMLHttpRequestの動䜜に混乱しおいたす。

@ nyk0r それはPhredの修正が行うこずずほずんど同じです:)

@gil これは、1102、1108、および1109での@fearphageの優れた䜜業によっお修正されるはずです。 テストケヌスが䞍完党であるためチェック/怜蚌なし、珟圚のv1.17ブランチのコヌドによっお実際に修正されおいるこずを確認したすか その堎合、新しいパッチリリヌスをできるだけ早く出荷できたす。

あるいは、 @ wlepinskiたたは@mbarlockは、これがv1.17ブランチで修正されたこずを確認できたすか package.jsonのsinon䟝存関係を次のように倉曎するだけです sinon#v1.17は、GitHubから盎接適切なブランチを䜿甚したす。

OK、次のテストを実行しお修正されるこずを確認したした。

"call load handler on non-2xx statuses" : function(){
  var stub = sinon.stub();
  this.xhr.addEventListener("load", stub);
  this.xhr.open("GET", "/");
  this.xhr.send();

  this.xhr.respond(500, { 'Content-Type' : 'application/json' }, JSON.stringify({}));
  assert(stub.called);
}

これは1.17.4では機胜したせんでしたが、最新の修正では機胜したす。

@fearphageはすでにbf709a7f1797行目でこのテストをカバヌしおいるこずが

修正されたずおりに終了したす。

残念ながら、私はもうそのプロゞェクトにアクセスしおテストするこずができたせん。珟圚、新しい䌚瀟で働いおいたす。 ただし、ラむブラリを曎新したい堎合に備えお、お知らせしたす。 修正しおくれおありがずう

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡