2010-05-22 29 views
1

我已經開始爲BDD使用MSpec,並且很久以前我使用Moq作爲我的嘲笑框架。但是,它們都定義了It,這意味着我不能在相同的代碼文件中使用using Moqusing Machine.Specifications,而不必每次使用It時都明確指定名稱空間。任何使用過MSpec的人都知道這不是一個真正的選擇。我可以「繼承」一個代表嗎?尋找方法來結合Moq和MSpec而不會發生衝突

我用Google搜索這個問題的解決方案,並this blogger提到已經分叉MSpec爲自己,並實現了GivenWhenThen paralell支持。

我想這樣做,但我不知道如何聲明例如Given而不必通過整個框架尋找Establish的引用,並更改代碼以符合我希望或者好的。

作爲參考,EstablishBecauseIt通過以下方式聲明:

public delegate void Establish(); 
public delegate void Because(); 
public delegate void It(); 

我需要的是某種方式宣佈Given,讓每一處的代碼查找一個EstablishGiven也行。

+0

dupe:[我怎麼做 - 基於一個新的委託類型的委託類型](http://stackoverflow.com/questions/) 861835/how-do-i-create-a-new-delegate-type-on-a-existing-one-in-c-rq = 1) – nawfal 2014-07-07 17:53:35

回答

1

而不是使用完全限定的類型名稱,克服了衝突,你可以使用「使用」別名的類型名稱,例如:

using MadeUpName = System.Windows.Forms.SomeClass; 

然後可以使用MadeUpName沒有衝突。

MadeUpName obj = new MadeUpName(); 
+0

這是目前可接受的解決方法,但它確實意味着我必須在每個spec文件的頂部包含使用語句。我有沒有辦法避免這種情況? – 2010-05-22 23:35:50

+0

據我所知並不如此。你是通過VS添加你的規格文件嗎?您可以修改現有的VS模板以包含樣板文件,方法與使用bog標準類模板文件中的導入來獲取默認加載相同。 – 2010-05-22 23:41:50

+0

我想這很好。謝謝! – 2010-05-23 10:36:45

相關問題