2012-04-07 7 views
1

最近NSpecを使い始めましたが、今はどのようにスケールするのかよく分かりません。NSpec仕様の再利用

仕様(it["something"] =() => {};)を再利用する最良の方法は何ですか?

私はインターフェイスIMyServiceとそれを実装する2つのクラス:Service1Service2を持っているとしましょう。

今度は、IMyserviceレベルに適用される仕様書を作成し、それらを2つの実装クラスに対して実行したいと考えています。

多分私はここに何かを見逃していますが、私はこれを行う簡単な方法を見つけることができます。

答えて

2

抽象クラスを使用して仕様を再利用することができます。そのアミールのため

/* 
Output: 

describe Service1 
    it should do this 
    it should also do this 
    specify something unique to service1  
describe Service2 
    it should do this 
    it should also do this 
    specify something unique to service2 
*/ 


abstract class some_shared_spec : nspec 
{ 
    public IMyservice service; 

    void it_should_do_this() 
    { 

    } 

    void it_should_also_do_this() 
    { 

    } 
} 

class describe_Service1 : some_shared_spec 
{ 
    void before_each() 
    { 
     service = new Service1(); 
    } 

    void specify_something_unique_to_service1() 
    { 
    } 
} 

class describe_Service2 : some_shared_spec 
{ 
    void before_each() 
    { 
     service = new Service2(); 
    } 

    void specify_something_unique_to_service2() 
    { 
    } 
} 

+0

ありがとう:ここでは一例です。私はこれを調べてから長い時間が経ちましたが、私は基底クラスのメソッドが含まれていなかったという印象を受けました。私はもう一度それを与えるだろう。ありがとう! – Pedro

+0

NSpecテストの良い例が必要な場合は、いつでもtwitterや電子メールで私に手を差し伸べてください。http://stackoverflow.com/questions/10741104/can-anyone-show-me-some -examples-of-nspec-being-to-test-controllers-and-ot – Amir

+0

これはNSpecの後のバージョンで追加されました。最新のバージョンを使用してください。 – Amir