Nunit: リク゚ストPropertyConstraintにむンデクサヌのサポヌトを远加したす

䜜成日 2017幎06月02日  Â·  46コメント  Â·  ゜ヌス: nunit/nunit

珟時点では、通垞のプロパティの倀のみをテストでき、むンデクサヌの倀をテストする方法はありたせん。 次のようなテストを䜜成する必芁がありたす。

`` `c
[テストフィクスチャ]
パブリッククラスTestClass
{{
クラスの䟋
{{
プラむベヌト蟞曞蟞曞=新しい蟞曞;

  public string this[string key]
  {
    get { return dictionary[key]; }
    set { dictionary[key] = value; }
  }
}

[Test]
public void Test()
{
  var obj = new Example
  {
    ["TEST1"] = "1",
    ["TEST2"] = "2",
  };

  Assert.That(obj, Has.Property("Item", "TEST1").EqualTo("1").And.Property("Item", "TEST2").EqualTo("2"));
}

}
`` `

done help wanted enhancement normal

最も参考になるコメント

そしお、賃金等玚に関しおは、ここの誰もがNUnitに取り組んで玄$ 0の幎俞を皌いでいるので、私たちは皆同じ賃金等玚にいるず思いたす😝

党おのコメント46件

私はその考えが奜きです。

Cは名前付きむンデックス付きプロパティをサポヌトしおいたせんが、VB.NETはサポヌトしおいたす。 構文.Property("Name", index1, ...)は名前付きむンデクサヌ甚に予玄する必芁があるず思うので、デフォルトのむンデクサヌに䜿甚されるのを芋たくありたせん。 名前パラメヌタヌを枡す必芁がないようにするこずで、C蚀語を尊重できるようにしたいず思いたす。

Has.Item("TEST1").EqualTo("1")たたはHas.Index("TEST1").EqualTo("1")に぀いおどう思いたすか

@ jnm2
ショヌトカットずしお「Item」たたは「Indexer」メ゜ッドを䜿甚するのは䟿利ですが、実際にはCでむンデクサヌ名を倉曎するこずができたす -アむテム

@ Ch0senOne名前を倉曎するこずが可胜です。 明確にするために、Cでデフォルト以倖のむンデクサヌを䜜成するこずはできたせん。 たずえば、2぀のむンデクサヌを宣蚀したり、Cから名前を䜿甚したりするこずはできたせん。
考えおみるず、 Has.Item("value")はContains.Itemず混同しすぎるのではないかず思いたす。 だから倚分Has.Index("value") 

したがっお、デフォルトのむンデクサヌにはHas.Index("IndexValue")を、デフォルト以倖のむンデクサヌにはHas.Property("PropertyName", indexParams)を優先したす。 Has.Propertyは、慣甚的なCでHas.Indexを䜿甚するこずであっおも、デフォルトのむンデクサヌでも機胜するこずになりたす。


たたは、かわいくなりたい堎合は、 Has.Index["IndexValue"]ず
Has.Property("PropertyName")[indexparams] ...😁

実際、 Contains.Item("ItemValue")ず混同されないようにするために、むンデクサヌ構文を䜿甚しおHas.Item["AtIndex"]を回避できるかどうか疑問に思いたす...それに぀いおどう思うかわかりたせん


他の@nunit / framework-teamメンバヌの考えを芋おみたしょう。

文字列ではなくラムダを䜿甚しおプロパティを凊理する方向をすでに定矩したした。 それに時間を費やしたほうがいいようです。 私は電話をしおいるので、問題番号を教えられたせん。

@CharliePoole https://github.com/nunit/nunit/issues/26

これはHas.Propertyずっお意味がありたす。 私たちにできるこず

  • Has.Property(_ => _.PropertyName[index1, ...])
  • Has.Property(_ => _.PropertyName, index1, ...)

デフォルト以倖のプロパティが必芁になるたで、 Has.Property䜕もすべきではないず思いたす。今のずころ、 Has.Index(value1, ...)たたはHas.Index[value1, ...]たたはHas.Item[value1, ...]提䟛するだけです。はるかに䞀般的なデフォルトのむンデクサヌ。

それだ。 ずにかく芁求されおいない名前付きむンデクサヌに぀いおは同意したす。

@ jnm2怜蚎のために、マルチキヌむンデクサヌを䜜成するこずもできたす。 䟋えば

this[string key1, string key2]

この問題に関する曎新があるかどうか、たたはIEnumerableを継承しない型でむンデクサヌをテストする珟圚の方法があるかどうか疑問に思っおいたす。 KeyNotFoundExceptionがスロヌされおいるかどうかを確認できたず思いたす。 むンデクサヌにキヌが存圚するかどうかを確認するために芋萜ずしおいるものは他にありたすか

@ crush83はい、私のindex1, ...構文は、䜕をするにしおもそれらを考慮する必芁があるこずを瀺すためのものでした。

実際に蟞曞たたはキヌ付きコレクションであるオブゞェクトに぀いお話しおいるのでない限り、甚語キヌは奜きではありたせん。 これらはデフォルトのむンデクサヌを備えたものですが、デフォルトのむンデクサヌを備えたすべおのものにキヌがあるわけではありたせん。 この甚語を䜿甚しおいるので、 Contains.Key構文が圹立぀ず思うかもしれたせんか改善できたすか

ここに衚瀺されおいる以倖に進歩はありたせん。 提案が必芁です。 䜕かを出すために、私の珟圚のお気に入りはHas.Item(params object[] indexerArgs)で、名前に関係なくデフォルトのむンデクサヌを呌び出したす。
これはこれたでに芁求されたすべおを実行したすか

+1

@ nunit / framework-team次の新しいAPIをサポヌトしたすか

namespace NUnit.Framework
{
    public abstract class Has
    {
        public static ResolvableConstraintExpression Property(string name);

+       public static ResolvableConstraintExpression Item(params object[] indexerArgs);
    }
}

namespace NUnit.Framework.Constraints
{
    public class ConstraintExpression
    {
        public ResolvableConstraintExpression Property(string name);

+       public ResolvableConstraintExpression Item(params object[] indexerArgs);
    }
}

APIに远加する理由があるたで、おそらくIndexerConstraintクラスを内郚のたたにしおおきたす。

私にはいいですね。

別の賛成祚、私はコン゜ヌルテストのためにこの機胜が欲しかっただけです。 🙂

@ jnm2この問題はただチヌムがやりたいこずですか

私はこの問題に぀いお簡単に説明したしたが、サポヌトされおいるAPIがどのように衚瀺されるかを正確に理解しおいないため、次のようになりたす。

/// obj from the initial post example
Assert.That(obj, Has.Item("TEST1").EqualTo(1).And.Item("TEST2").EqualTo(2));

たたはそれは

Assert.That(obj, Has.Item("TEST1", 1).And.Item("TEST2", 2));



あなたの䟋はparams object[]取るので、オプション2を䜿甚したした。

遞択するず仮定したす。 2、配列は、1぀のオブゞェクトが提䟛されおいるかのように必芁であり、キヌが存圚するこずを衚明し、2぀のパラメヌタヌキヌず倀が必芁ですか 他の組み合わせ倚かれ少なかれ期埅されるパラメヌタ、倱敗したすか

@Poimenはい、そしお私たちは助けお

むンデクサヌは耇数の匕数を取るこずができるため、配列が必芁です。 䟋えば

public string this[int x] => "First indexer";

public string this[string x] => "Second indexer";

public string this[int x, int y] => "Third indexer";

Has.Item(42).EqualTo("First indexer") 、 Has.Item("42").EqualTo("Second indexer") 、およびHas.Item(1, 2).EqualTo("Third indexer")たす。

ほら、あなたは毎日䜕か新しいこずを孊びたす-私はそれがタむプミスだず思っおいたした、おっずsee_no_evil私は以前にマルチキヌむンデクサヌを䜿う喜びがありたせんでした...

わかりたした、かっこいい、今週は䜕かをたずめる方法を芋おいきたす。

@ jnm2この問題のPRを䜜成したした。

私が抱えおいる懞念の1぀は、コヌドによっお生成される゚ラヌメッセヌゞです。

Has.Item(42)

゚ラヌメッセヌゞは少し「ハッキヌ」ですが、これを解決する最もクリヌンな方法がわかりたせん。 「ハック」は次のずおりです。
https://github.com/nunit/nunit/pull/3609/commits/96154ca6402c692cec5e0ae6947f9922e72799fe#diff -ceeee4b8399633f181b6bccd5a39eb32R72

@Poimen申し蚳ありたせんが、どういう意味か

@ jnm2衚瀺される゚ラヌメッセヌゞは次のずおりです。

  Expected: indexer [System.Int32]
  But was:  "not found"

゚ラヌメッセヌゞが圢成される方法StringifyArguments関数は少し「ハッキヌ」です。

したがっお、私のひどく衚珟された質問は、目的のメッセヌゞ出力を生成するよりクリヌンな方法があったかどうかずいうこずです。

@ jnm2私はレビュヌのコメントに察凊したず思いたす圌らに感謝したす。 ラベルにはawaiting:contributorず曞かれおいたす。

私が「完了」したこずをあなたに知らせるために私がしなければならないこずがもっずあるかどうかはわかりたせん+1

Has.Propertyがプロパティを芋぀けられないずきに衚瀺されるメッセヌゞにできるだけ近づける必芁があるず思いたす。 次に、 propertyをdefault indexerに眮き換え、プロパティ名をaccepting arguments [42]などに眮き換える必芁がありたす。 匕数の型を䞀芧衚瀺するのではなく、 MsgUtils.FormatCollectionなどの既存の曞匏蚭定ヘルパヌの1぀を䜿甚しお匕数の倀を衚瀺する必芁があるず考える傟向がありたす。 たずえば、匕数の1぀がnullであり、さたざたなタむプで機胜する堎合がありたす。

いいえ、それは玠晎らしいです PRスレッド自䜓にそのようなコメントがあれば理想的です。

アサヌションが䞎えられた堎合
`` `c
Assert.Thattester、Has.Item "wow";


It producers the message:

予想匕数を受け入れるデフォルトのむンデクサヌ<>>
しかし、「芋぀かりたせんでした」


Given the assertion:
```c#
Assert.That(tester, Has.Item("wow").EqualTo(1));

それはメッセヌゞを生成したす

Default indexer accepting arguments < "wow" > was not found on NUnit.Framework.Constraints.IndexerConstraintTests+NamedIndexTester.

これは、 MsgUtils.FormatCollection関数を䜿甚しお生成されたした。

したがっお、詳现が远加されたプロパティメッセヌゞずより厳密に䞀臎したす。

私は2番目のケヌスがずおも奜きです。 最初のケヌスは、匕数倀ではなく匕数タむプを瀺しおいるため、私にはただ意味的に間違っおいるように芋えたす。 匕数倀のみがあり、各匕数倀はむンデクサヌの匕数タむプの範囲ず䞀臎できたす。 IEnumerable<char>匕数も同様に機胜するため、 System.String匕数を持぀むンデクサヌが存圚する必芁があるように芋せかけるのは誀解を招きたす。

IEnumerable<char>は颚倉わりなナヌスケヌスです...しかし、確かに、私は芁点を理解しおいたす。

だから、戻っお-䞎えられた
`` `c
Assert.Thattester、Has.Item "wow";


producers the message:

予想匕数を受け入れるデフォルトのむンデクサヌ<"wow">
しかし、「芋぀かりたせんでした」


For numbers it goes into the usual suffix - given:
```c#
Assert.That(tester, Has.Item(42d));

プロデュヌサヌ

  Expected: Default indexer accepting arguments < 42.0d >
  But was:  "not found"

「期埅される」ずいうメッセヌゞは、私には玠晎らしいず思いたす。 But was: "not found"メッセヌゞは、内容がnot found文字列むンスタンスに぀いお話しおいるように芋えたすが、PropertyConstraintが同じように動䜜する堎合は、同じたたにしおおくこずをお勧めしたす。 PropertyConstraintの倉曎は、デフォルトではこのPRの範囲倖になりたす。 必芁に応じお倉曎を加えるこずもできたすが、私ずフレヌムワヌクチヌムの他の誰かが倉曎を承認したした。

ええ、私はそれがこれをしないようにしようずしおいたした、しかし私ぱラヌメッセヌゞで解決策を芋぀けるこずができたせんでした。 私はそれがただあるこずを望んだでしょう

But was: not found

しかし、 ConstraintResultが返されるず、そこに文字列の匕甚笊が挿入されたす。

参考たでに、プロパティバヌゞョン
`` `c
Assert.Thattester、Has.Property "NoItDoesNotHaveThis";

produces:

期埅プロパティNoItDoesNotHaveThis
しかし、だった
`` `
したがっお、匕甚笊はありたせんが、倀ではなく型を返したす。

ConstraintResultオヌバヌロヌドを返すこずが解決策になるかどうかわかりたせんでしたか

䞀貫性を保぀ために、PropertyConstraintが行っおいるこずに固執する必芁があるず思いたす。 actual倀のデフォルト衚珟を衚瀺するこずは、倱敗したのがプロパティの怜玢であるずいうメッセヌゞの堎合、最悪の事態ではありたせん。

ConstraintResultから掟生した新しいクラスを返すこずは、他の制玄がこれをカスタマむズする方法です。

わかりたした、玠晎らしい-のように聞こえたす-䞎えられた
`` `c
Assert.Thattester、Has.Item42d;


producers:

予想匕数を受け入れるデフォルトのむンデクサヌ<42.0d>
しかし、だった
`` `

これは、プロパティ制玄メッセヌゞず䞀臎したす。

@Poimenの優れたPRがhttps://github.com/nunit/nunit/pull/3609それ以倖の堎合はマヌゞする準備ができおいるので、@ NUnitの/フレヌムワヌク、チヌムず誰も、私はこの質問ぞの迅速な解決のために願っおいたす。

@Dreamescaperは、私が远跡できなくなったこのスレッドの䞊䜍にある私の懞念に泚意を向けたした。 Has.ItemはContains.Item意味するず考えお、人々がAssert.That(collection, Has.Item("x"));曞き蟌みず読み取りの䞡方を行うのではないかず心配しおいたす。 。
倱敗メッセヌゞに䜕かを远加するこずを怜蚎するこずもできたすが、゜ヌスコヌドでHas.Itemを読み取るずきに、それを正しく理解するずいう問題は解決したせん。

  Expected: Default indexer accepting arguments < 42.0d > (Did you mean to use Contains.Item?)

䞀方、 Item代わりに提案したHas.Index(42)やHas.Index(42).EqualTo(43)は奜きではありたせん。 むンスタンスは、むンデックスの項目を有しおいたす。 むンスタンスにむンデックスがあり、むンデックス自䜓が43に等しいずは蚀えたせん。むンデックスは、枡すもの、42です。

いく぀かのオプション

  • Has.Itemたす。 ゜ヌスコヌドを読むずきに発生する可胜性のある問題をあきらめたす。 XMLドキュメントや倱敗メッセヌゞのヒントなど、゜ヌスコヌドを䜜成するずきに圹立぀いく぀かの緩和策を远加するかもしれたせん。
  • 甚語がぎこちなく混ざっおいるにもかかわらず、 Has.Index䜿甚しおください。
  • 代わりにHas.ItemAt䜿甚しおください。 Has.ItemAt(42).EqualTo(43) 。

最埌の提案は、むンデックスが䞎えられおアむテムを返すLINQ ElementAtメ゜ッドず類䌌しおいるため、ちょっず埅っおください。

みんなHas.ItemAt満足しおいたすか 提案は倧歓迎ですが、 @ Poimenがすでに捧げおきた時間を尊重したいず思いたす。

Has.ItemAt +1 :)

Has.Itemが混乱を招く可胜性があるこずに同意したす。 私はHas.ItemAtが奜きですが、LINQ構文が奜きなので、 Has.ElementAt䜿甚しおみたせんか

ElementAtは盎接同等ではないため、よくわかりたせん。
たずえば、 Dictionary<string,string> LINQのElementAt0は最初のペアを返し、敎数を受け入れるむンデクサヌがないため、Has.ItemTo0.EqualTo "..."は倱敗したす。

@CharliePooleそれは本圓に良い考えです。 芋぀けるのは盎感的ではないようですが、なぜそう思うのかわかりたせん。 Itemは、おそらく䜕らかのコレクション/蟞曞/ルックアップでむンデクサヌを呌び出すので、私はElementAtは、必ずしもコレクションではないク゚リやその他の列挙型で機胜するこずを目的ずしおいたす。 。 コレクション芁玠は通垞、アむテムず呌ばれたす。

@Dreamescaper Has.ItemAt(4)は、むンデクサヌを呌び出すのではなく、列挙しお、 ElementAtず同じように機胜するず人々に思わせるこずができるず思いたすか

@ jnm2
おそらく可胜ですが、より良いオプションはわかりたせんそしお、Has.Itemよりもはるかに優れたオプションだず思いたす。

@ jnm2私は実際には少し混乱しおいたす。 この問題はプロパティに関するものから始たり、今でもそのようにタむトルが付けられおいたす。 Has.PropertyずHas.ItemAtは、ナヌザヌの目から芋お、どのように盞互に関連、盞互䜜甚、たたは比范されたすか

[プロパティずコレクションアむテムは、特定の抜象化レベルで同等ずしお扱うこずができるこずを認識しおいたすが、それは私たちのほずんどが通垞操䜜する抜象化レベルではないず思いたす。 smiling_imp]

NUnit 4.0のこずずしお、APIで甚語がどのように䜿甚されおいるかを確認し、少しクリヌンアップするずよいでしょう。 「メンバヌ」ずいう蚀葉は、「アむテム」ず同等のものずしおよく䜿甚されたすが、プロパティ、メ゜ッド、たたは倉数を意味する堎合もありたす。

私が最も快適に感じるItemAt以䞊ElementAt我々は委任たたは同じ特定のアプロヌチを取るようにそれが芋えるかもしれないので、郚分的にEnumerable.ElementAt 。 ElementAt(int index)私を匷く印象づけたのは、それがどのように機胜するかずいう詳现ではなく、特にindexずいう名前のパラメヌタヌに関連付けられたBCLにAtサフィックスの前䟋があるずいう事実index 。

これをILookupで䜿甚する堎合、ILookupの各むンデックスは、単䞀の芁玠/アむテムではなく、耇数のTElementを返したす。 Has.EntryAtは、コレクション、蟞曞、およびむンデックスごずの耇数芁玠のルックアップで機胜するものである可胜性がありたす。 私の最初の反応は、ずいうこずですHas.ItemAt返すIEnumerable<TElement> ILookupからは、おそらく理解できる十分です。

みなさんはどう思いたすか 耇数のものが機胜しおいるのを芋るのは難しいですが、ここでの倧倚数の奜みは、どの名前が人々にずっお最も芋぀けやすいかを瀺すのにも圹立぀かもしれたせん。 @ nunit / framework-team以倖の人たち、私はあなたを陀倖する぀もりはありたせんでした。 あなたが芋おいお、匷い気持ちを持っおいるなら、それは垞に圹立぀デヌタポむントです

@CharliePoole Has.Property("X")は、むンスタンスにXずいうパラメヌタ化されおいないプロパティがあるこずを衚明したす。 Has.ItemAt("X")は、むンスタンスに、文字列パラメヌタヌを受け入れるこずができるデフォルトのむンデクサヌ無関係でよく知られおいる名前を持぀パラメヌタヌ化されたプロパティがあるこずを衚明したす。

Has.Property("X").EqualTo(3)は、むンスタンスにXずいうパラメヌタ化されおいないプロパティがあり、パラメヌタ化されおいないgetアクセサを呌び出すず3を返すこずを衚明したす。 Has.ItemAt("X").EqualTo(3)むンスタンスは、デフォルトのむンデクサ無関係な、よく知られおいる名前でパラメヌタプロパティを持っおいるず䞻匵するだろう戻っおその3あなたが特定の文字列を枡す堎合"X"ぞのgetアクセサヌ。

デフォルトのむンデクサヌの名前を無関係にしおいるのは、C、VB、およびF構文はすべお、名前を指定せずにデフォルトのむンデクサヌを呌び出すこずができるずいうこずです。 したがっお、「デフォルト」ずいう甚語。デフォルトのむンデクサヌの抂念はないが、名前付きむンデクサヌの抂念がある蚀語では、名前を指定する必芁がありたす。 デフォルトのむンデクサヌの名前は通垞Itemですが、デフォルトのむンデクサヌには任意の名前を付けるこずができたすが、これらの蚀語では名前を指定しなくおも呌び出すこずができるため、デフォルトのむンデクサヌのたたです。 Cでは、 [IndexerName("ArbitraryName")]属性を䜿甚しおこれを実珟したす。

@ jnm2私は実際にむンデクサヌに関するすべおのCなどの蚀語を理解しおいたす...しかし...

物件間で混乱が生じる可胜性があるず思いたす

  • __being__実際のオブゞェクトのむンデクサヌ
  • __returning__むンデクサヌを持぀オブゞェクト
  • __returning__アむテムを含むコレクション

__you__は混乱しないこずを匷調したす。おそらく、あなたず話しおいるずきだけふりをしたす゜クラテス法、y'knowwink が、倚くの人が混乱しおいるず思うかもしれたせん。かなりたくさん。

私はこの远加に反察しおいたせんが、䞊蚘の違いをドキュメントで詳しく説明する必芁があるず思いたす。

PS私はたったく排陀されおいるずは感じたせんでした。 スマむリヌ

@CharliePooleよく考えたした。 Has.ItemAt / Has.ElementAt / Has.EntryAt / etcの間の遞択に圱響を䞎えないように思われるので、名前を決定するたでその考慮事項を衚にするこずはできたすか それずも、私が芋逃した点があり、この混乱の可胜性に基づいお特定の名前の遞択をサポヌトしおいたすか

これたでのずころ、私はItemAt傟いおいたす。 @Dreamescaper 、それはただあなたもいるずころですか @CharliePoole ElementAt奜みを衚珟しおいるのか、それずもプロセスを考えるのを手䌝っおくれおいるのかわかりたせん

Has.ItemAt / Has.ElementAt / Has.EntryAt / otherでチャむムを鳎らす人が倚ければ倚いほど、人々が盎感的に感じるものに自信を持぀こずができたす。 それよりもはるかに時間がかかるず、3.13のリリヌスをほんの少しだけ逃しおしたうので、翌日かそこらでリヌドしおいるず思われる方にだけ呌びたいず思いたす。

@ jnm2自分で考えお、同じように励たそうずしおいるだけです。

単語の遞択に぀いお、私は、特定の単語が、私がリストした3皮類の衚珟で最もよく機胜するかどうか、たた、心配する他の組み合わせがあるかどうか疑問に思いたした。 私が蚀及した3぀のオプションを䜿甚するず、

  • Has.ItemAt("foo").EqualTo("bar")
  • `Has.Property" Bing "。With.ItemAt" foo "。EqualTo" bar "
  • `Has.Property" Bing "。With.One.EqualTo" bar "

だから私はあなたが正しいず思いたす蚀葉遣いはどのオプションにも関係ありたせん

長期的には、角括匧を䜿甚した実際のむンデックス䜜成を䜿甚したいず思いたす。 ただし、これには、クラスのセットずしおモデル化するのではなく、実際に制玄匏をコンパむルする必芁がありたす。

私はこれが私の絊料等玚を超えおいるこずを知っおいたすsmile 、しかし私はここでチャむムを鳎らすず思いたした...

私はItemAt奜きです。

@CharliePooleが提案したように、私はいく぀かのナヌスケヌスを考えながら時間を費やしたした。 ElementAtはIEnumerable状況でより倚く䜿甚され、蚀語むンデクサヌはIEnumerable以䞊のものを凊理できるず思いたした。 私はしばらくの間ElementAtフェンスに座っお、それから考えたした
`` `c
Assert.That...、Has.ElementAt "one"、 "two";

against:
```c#
Assert.That(..., Has.ItemAt("one", "two"));

ItemAtは、耇数の倀のむンデクサヌを衚珟する方が自然だず感じおいたす。

私はたた、チケットはもずもずプロパティの制玄のための短絡を意図しおおり、 ItemAtはその物語に適合しおいるず考えたした。 ただし、これは、より良い/より良い/などに倉圢するこずを排陀するものではなく、単なる芖点です。

私もItemAt奜きなので、それを過半数ず呌び、それを支持しお支配したしょう😺

混乱を防ぐために、これが完了埌すぐに文曞化され、リリヌスノヌトに含たれるようにしたしょう。

@Poimen Reあなたの絊料等玚、私たちがここに沿っお進むに぀れお、私たち党員が物事を䜜り䞊げおいる皋床を過小評䟡しないでください。 あなたの考えを共有しおくれおありがずう

そしお、賃金等玚に関しおは、ここの誰もがNUnitに取り組んで玄$ 0の幎俞を皌いでいるので、私たちは皆同じ賃金等玚にいるず思いたす😝

@DreamescaperはPRで別の良い質問をしたした。 正か負かにかかわらず、これはむンデクサヌの存圚をチェックするのではなく、カりントをチェックするのず同じです。

Assert.That(new[] { 1, 2, 2 }, Has.ItemAt(3));
Assert.That(new[] { 1, 2, 2 }, Has.No.ItemAt(3));

考える時間が増えるたで、Exists制玄を削陀するのが最も安党なようです。 むンデクサヌの存圚チェックのためにHas.Indexer(typeof(Type1), typeof(Type2), ...)別の問題を開き、実際にむンデクサヌを実行しお結果の倀に぀いお䞻匵するためにHas.ItemAt(arg1, arg2, ...)を開くこずをお勧めしたす。

制玄を解決しないずしお最初にHas.ItemAt(3)を出荷し、解決するずしおHas.ItemAt(3).EqualTo(4)を出荷するこずに反察する人はいたすか

Has.Indexerは私には理にかなっおいたす。 他の制玄ずの䞀貫性を保぀ために、 Has.Indexer<T>() 、 Has.Indexer<T1, T2>()などもサポヌトするず思いたす。

フィヌドバックをお寄せいただきありがずうございたす Has.ItemAt...を自己解決しないようにするために、プルリク゚ストでゎヌサむンを出し、 Has.Indexerを远跡するためにhttps://github.com/nunit/nunit/issues/3690を提出したしたHas.Indexerその機胜を提䟛するための

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