問題タブ [mspec]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
unit-testing - TDD / BDDで入力オブジェクトを開発するには?
ProcessPayment()
BDDとmspecを介して開発しているというメソッドがあります。新しい挑戦に助けが必要です。私のユーザーストーリーは次のように述べています。
コンテキストをセットアップするために、Moq を使用してゲートウェイ サービスをスタブ化しています。
仕様は次のとおりです。
メソッドは「PaymentProcessingRequest」オブジェクト (ドメイン obj ではない) を受け取り、その obj をドメイン obj にマップし、ドメイン obj をゲートウェイ サービスのスタブ メソッドに渡す必要があります。ゲートウェイ サービスからの応答は、メソッドによって返されるものです。ただし、ゲートウェイ サービス メソッドをスタブ化しているため、何が渡されても問題ありません。その結果、メソッドがリクエスト オブジェクトをドメイン オブジェクトに適切にマップするかどうかをテストする方法がないようです。
ここで BDD を遵守できるのはいつですか?
c# - Behaves_like の使用基本クラスで
基本仕様で Behaves_like を指定して、特定のメソッドが仮想としてマークされるようにしたいと考えています。このようなもの:
ただし、テスト ランナーはこれを検出しません。コマンド ハンドラーのすべての仕様で ehaves_like を指定するのは、大きな PITA になると思います。これは可能ですか?そうでない場合、これは望ましい動作ですか?
更新: 応答が遅くなって申し訳ありません。失敗した仕様は次のとおりです。
resharper - MSpec と ReSharper の問題
codebetter teamcity サイトから最新の mspec を取得し、提案どおりに Resharper5.1 ランナーをインストールしました。ランナーと注釈は、リシャーパー オプション ダイアログに正常に表示されます。
注釈ライブラリにチェックが入っていても、どこでも「フィールド xxx は使用されていません」という警告が表示され、ソリューション内のすべてのテストを実行するよう resharper に依頼すると、仕様が見つからないようです。
dll のブロックを解除しました。
resharper 5.1 を使用します。
.net - Syste.Data.SQLite.dll x86でmspec.exeを実行することはできませんが、R#MSpecランナーで動作します
テストにはmspecを使用し、テストではデータベースにSQLitex86を使用するNHiernateセットアップを使用しています。問題は、mspec r#ランナーを使用してテストを実行すると、すべてが正常に機能しますが、コンソールから実行すると、sqlitedllが見つからないというエラーが発生することです。
仕様プロジェクトの私の構成:
.net 4
x86(sqliteのx86バージョンを使用)
System.Data.SQLite、Version = 1.0.64.0、Culture = neutral、PublicKeyToken = db937bc2d44ff139 mspec、Version = 0.3.0.0、Culture = neutral、PublicKeyToken = null、ターゲットランタイム:v4.0.30319、ターゲット:x86
MSpecはソースから構築されます。リフレクターでは、mspec.exeはx86用にビルドされたものとして表示されます。これは私のセットアップに適しているようで、前述のように、テストはr#ランナーを使用して正常に実行されています。
NHibernate.HibernateException:NHibernate.Driver.SQLite20Driver、NHibernate、Version = 2.1.2.4000、Culture = neutral、PublicKeyToken=aa95f207798dfdb4からドライバーを作成できませんでした。---> System.Reflection.TargetInvocationException:呼び出しのターゲットによって例外がスローされました。---> NHibernate.HibernateException:アセンブリSystem.Data.SQLiteのIDbCommandおよびIDbConnection実装が見つかりませんでした。アセンブリSystem.Data.SQLiteがアプリケーションディレクトリまたはグローバルアセンブリキャッシュにあることを確認します。アセンブリがGACにある場合は、アプリケーション構成ファイルの要素を使用して、アセンブリのフルネームを指定します。NHibernate.Driver.ReflectionBasedDriver..ctor(String driverAssemblyName、String connectionTypeName、String commandTypeName)at NHibernate.Driver.SQLite20Driver..ctor()
誰かがそれを修正する方法を考えていますか?
よろしくお願いします。曇りのウィーンからのご挨拶、
クリス
visual-studio-2010 - Visual Studio 2010 の MSpec がまだ正しく機能しない
Visual Studio 2010 でMSpecを実行すると、次のエラーが表示されます。
ファイルまたはアセンブリ 'Machine.Specifications.dll' またはその依存関係の 1 つを読み込めませんでした。システムは、指定されたファイルを見つけることができません。
別の投稿の解決策は、.net4 固有のバージョンの MSpec をダウンロードすることでした。しかし、それは私が使用しているものであり、まだ機能しません。今日も最新版を再ダウンロードし、build-4.0-release.cmd ファイルでビルドしました。私の参照を置き換えましたが、それでも同じ問題がありました。
奇妙なことに、MSpec を初めて実行したときは問題なく動作しました。このエラーが発生するのは、再実行しようとしたときだけです。
テストは、ReSharper テストランナーで問題なく実行されます。というわけで、まだまだ使えます。ただし、ReSharper テストランナーは Report.html ファイルを生成しません。それが本当に私がそれを機能させたい唯一の理由です。代わりに ReSharper に Report.html ファイルを生成させる方法はありますか? それも問題を解決するでしょう。
c# - 2 つのリストを MSpec で比較する
2 つのリストに MSpec の同じオブジェクトが含まれていることを確認するには、どの方法を使用すればよいですか?
resharper - mspec コーディングに合わせて resharper 設定を変更する
次のような新しいテストを作成すると:
should_get_something = () => foo(); です。
デリゲートの前面にあるセミコロンの resharper スティックをプライベートに押すと、次のようになります。
非公開 should_get_something = () => foo();
次に、それを削除する必要があります。
これを行わないように resharper に指示できますか? Machine.Specifications.It を選択し、Private のチェックを外して命名スタイル ダイアログにルールを追加しようとしましたが、これは効果がありませんでした。
c# - RhinoMocksを使用して3つの異なるタイプのジェネリックメソッドをAssertWasCalledするにはどうすればよいですか?
Rhino Mocks AAA構文を学習しようとしていますが、特定のメソッド(任意の引数値を使用)が呼び出されたことを表明するのに問題があります。テストフレームワークとしてMachine.Specificationsを使用しています。
この特定のメソッドは一般的であり、3つの異なるタイプで3回呼び出されたことを確認したいと思います。
タイプごとに関数をスタブしました。しかし、私は興味深い結果を得ています。(下)
結果は、2つの例外と1つのパスです。
最初の呼び出しは次のようにスローします。
System.InvalidOperationException:検証する期待値が設定されていません。アクションのメソッド呼び出しが仮想(C#)/オーバーライド可能(VB.Net)メソッド呼び出しであることを確認してください
2番目のものはスローします:
System.InvalidOperationException:記録中のモックメソッド呼び出し内でのみArgを使用してください。1つの引数が必要で、2つが定義されています。
3番目のものは合格します...いくつかの奇妙な理由で。
また、セットアップでExpectでGenerateMock()を使用したり、StubでGenerateStub()を使用したりしました。どちらもまったく同じ結果になりました。私は何か間違ったことをしなければならない。
私が使用しているのは、MachineSpec0.3.0.0とRhinoMocks3.6.0.0です。
何か案は?
- - -修繕 - - - - -
これがリーの助けを借りた完全な(作業バージョン)です。追加の(非linq)レイヤーを使用しています。私の実際の問題は、私のテストの1つがオフラインの実際のコードで間違ったラムダ変数を再利用したことでした。それはShould_do_something=()=> repo.AssertWasCalled(o => repo .Save(data)); //悪いラムダ
したがって、参照用の正しいテストのサンプルを次に示します。
c# - LambdaExpressionの比較
私はマシンの仕様を使ってテストをいじっていましたが、私にはできないことがあり、誰かが以前にそこにいたことがあるかどうか疑問に思っていました。
Rhino Mocksを使用して、ラムダ式を使用するメソッドのスタブを作成する方法はありますか?次のことができることがわかりました
サンプルクラスにこのメソッドを含める:
私はこのようにメソッドをスタブすることができます:
問題は、特定のラムダ式のためだけに、Any Lambda式ではなくメソッドをスタブしたいので、この式がメソッドで変更された場合にテストが失敗するようにすることです... "x=>x.Id==userId && user.IsActive ==true"
データベースに移動しないモックリポジトリを作成して、ラムダでの動作をテストできると思いますが、これには別のアプローチがあるかどうか疑問に思っていました...
これに関する提案に感謝します、ありがとう