問題タブ [quick-nimble]
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.
swift - Swift Quick/Nimble: expect の曖昧な使用
私は Quick/Nimble を初めて使用するので、単純な単体テストを試していました。
それでも、expect行でエラーが発生します:
「expect(_:file:line:)」のあいまいな使用
これがあいまいである理由がわかりません。これは、私が知ることができるクイック例でどのように見えるかです.
swift - Swift Quick/Nimble テストが実行されていない
Quick と Nimble が適切に機能しているかどうかを確認する簡単なテストを実行しようとしていますが、そうではありません。これが壊れると思われる私の簡単なテストです:
しかし、テストを実行すると、出力が表示されます。
0.000 (0.004) 秒で 0 回のテストを実行し、0 回の失敗 (0 回の予期しない)
なぜゼロテストが実行されているのかわかりません。それが問題の原因である可能性がある場合は、Cocoapods の代わりに Swift Package Manager を使用して Quick and Nimble をインストールしました。
swift - Nimble を使用した Quick でエラーをスローするメソッドのテスト中にエラーが発生しました
例外をスローするメソッドのテストで Nimble マッチャーを正しく取得するのに問題があります。ドキュメントによると、それは単純なはずです。こんな期待しかない
ただし、Swift 3 と Xcode 8.2 では、コンパイラ エディターを取得しています。これが文脈です。
「it」宣言行で次のエラーが発生します
swift - BDD で値オブジェクト型の「isEqual」メソッドをテストするにはどうすればよいですか?
私は、テストの世界全体でさえ、BDD を初めて使用します。
単純な線形代数ライブラリを迅速に作成するときに、BDD の実践を試みています。したがってMatrix
、Vector
などの多くの値オブジェクト型が存在することになります。コードを記述するときは、TDD の原則に固執する必要があると思います (そうですか?)。
テストに失敗せずにコードを 1 行も書かない
Equatable
値オブジェクト型を実装するには、それをプロトコルに準拠させ、その==
演算子を実装する必要があります。これはコードを追加しているため、失敗したテストが必要です。このようなシナリオの仕様を書く方法は?
次のようなアプローチを提案できます。
これは、次の 2 つの理由から、見苦しいボイラープレートになります。
- 多くの値オブジェクト型が存在する可能性があり、それらすべてについて繰り返す必要があります
- 2 つのオブジェクトが等しくない原因となるケースはたくさんあります。上記の仕様を例にとると、
==
likeの実装はreturn lhs.rows == rhs.rows
テストに合格します。この「バグ」を明らかにするには、 のような別の期待値を追加する必要がありexpect(matrixWithDifferentColmunCount) != aMatrix
ます。繰り返しになりますが、このような繰り返しはすべての値オブジェクト タイプで発生します。
では、この「isEqual」(またはoperator==
) メソッドをエレガントにテストするにはどうすればよいでしょうか? または、まったくテストしないでください。
フレームワークのテストにswiftとQuickを使用しています。Quick は、ボイラープレートを減らすためにSharedExampleと呼ばれるメカニズムを提供します。しかし、Swift は静的型付け言語であり、Quick の共有例はジェネリックをサポートしていないため、共有例を直接使用して値オブジェクトをテストすることはできません。
私は回避策を思いつきましたが、それをエレガントなものとは考えていません。