2012-04-07 61 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 2012-08-12 00:05:21

+0

如果你需要NSpec測試的一些很好的例子,我隨時可以通過twitter或電子郵件聯繫我,我會推薦這個:http://stackoverflow.com/questions/10741104/can-anyone-show-me-some -nspec-being-used-test-controllers-and-ot – Amir 2012-08-13 19:46:31

+0

這是在NSpec的更高版本中添加的,請務必使用最新版本。 – Amir 2012-08-14 03:13:52