2014-10-07 26 views
0

考慮下面的類和方法:單元測試是否應確保調用特定的方法來獲得結果?

public class CarService 
{ 
    private readonly ICarModelService _cardModelService; 

    public TestMe(ICarModelService service) 
    { 
     _service = service; 
    } 

    public Car Add(string vin) 
    { 
     var model = _cardModelService.GetByVIN(vin); 
     if (model == "Chevy") 
      throw new InvalidCarModelException(); 
     // other logic 
    } 
} 

當測試Add方法,它是明智的,以確保(通過NSubstitute's Received function)呼叫_cardModelService.GetByVIN(vin)接收或者我應該只測試異常InvalidCarModelException被拋出?

這個測試是否太多?

+0

我認爲你應該只測試需要測試的東西,而不僅限於此。因爲測試代碼也是代碼,你也需要維護。如果你認爲你的測試增加了很少的價值,那就再三考慮我的2c。 – Leo 2014-10-07 04:42:50

回答

0

單元測試應該完全覆蓋他們的名字 - 練習應用程序中最小的可測試部分。如果你以某種方式依賴於其他先決條件,如你所知Mocking主要用於單元測試。

被測對象可能依賴於其他(複雜)對象。 要隔離要測試的對象的行爲,請使用模擬實際對象行爲的模擬替換其他對象。 如果真實對象不能將 合併到單元測試中,這很有用。

爲避免重複,您可以查看my answer here。更具體地說,你需要關注的不是var model對象。

,以確保呼叫_cardModelService.GetByVIN(vin)收到

是另一種類型的測試的問題,像System integration testing。 只需要單元測試您的public Car Add(string vin)正面和負面的方法。

相關問題