2011-09-12 9 views
1

Facebook C#SDKから返された動的をアサートするnUnitテストケースがあります。 NUnitの流暢な構文を使ってそれをアサートする方法はありますか?今私はあなたの答えは「プロパティ」を直接NUnitはC#のダイナミクスの流暢な構文をサポートしていますか?

// working, but not fluent 
var client = new FacebookClient(accessToken); 
dynamic userInfo = client.Get("me"); 
Assert.That(userInfo, Is.Not.Null); 
Assert.That(userInfo.id, Is.Not.Null); 
Assert.That(userInfo.name, Is.Not.Null); 

感謝を指定することによってのみ、テストすることができ

​​

:ここでは私が探している何のための非常に単純化し例があります。

答えて

2

jsonオブジェクトはIDictionary <string.object>ですので、そのメソッドを使用できます。

var client = new FacebookClient(accessToken); 
dynamic userInfo = client.Get("me"); 
var hasId = userInfo.ContainsKey("id"); 

私はNUnitの流暢APIを使用していないが、私はHas.Keyのようないくつかの方法()

+0

おかげでサポートされていません、この機能:) – Akim

0

userInfoがIDynamicMetaObjectProviderの場合、NUnit Hasは機能しません。 NUnit制約APIが動作するように変更できるかどうかは、どのように含意されたかによって異なります。反射で実装されている場合は、dynamic invocation insteadを使用することができます。ただし、式で実装されていれば、実際の動的オブジェクトでは動作しません。

+0

は今、私は[NUnitのフォーラム]の答えを持っている(https://answers.launchpad.net/nunit-3.0/+question/170909) - あなたの提案のために今 – Akim

2

prabirは私に良い提案を与えるかもしれないが推測しています。少なくとも私はとしてIDictionaryを確認し、テストのためにCollectionAssert.IsSubsetOfを使用することができます。私が探しているものを100%カバーしているわけではありませんが、最も近い提案です。

var client = new FacebookClient(accessToken); 
dynamic userInfo = client.Get("me"); 
Assert.That(userInfo, Is.Not.Null); 

var requiredDynamicProperties = new[] { "id", "name", "wtf" }; 

var dictionary = (userInfo as IDictionary<string, Object>); 

CollectionAssert.IsSubsetOf(requiredDynamicProperties, dictionary.Keys); 
// message will describe in details that no "wtf" found 
関連する問題