2012-05-12 71 views
0

我有一個嚮導,有一堆「步驟」,並在每一步中一堆「輸入」(文本框,單選按鈕列表,複選框列表,下拉菜單)。我怎樣才能將假數據傳遞給我的視圖(測試 - 我知道你不測試視圖)

一切是偉大的工作,但現在我想在嚮導的我最後的「提交」的步驟進行一些計算,我需要做兩件事情:

1)制定出的一個邏輯+ b +(c * 2)等。我不需要「測試」這一點,我只是有一堆if/else子句,並且正在計算出計算結果。

2)爲了方便上述,並且很快看到輸出(包括CSS/UI和內容),我想傳遞所有步驟中的假數據。如何最好地做到這一點?

我使用的是一堆型號/的ViewModels的,所以MyModel可能有:

public string FirstName { get; set; } 

MyViewModel將有:

public MyModel MyModel { get; set; } 

現在,大約有10款車型拉到一個視圖模型,基本上有50多個輸入。我的問題是,如果我想看到「提交」的最終結果,我必須通過嚮導每次。

我想跳過這個目的,不通過整個嚮導傳遞假數據(假設我的入口點是我的「確認」步驟,它有一個「提交」按鈕,所以我想從「確認」開始,然後點擊「提交」(否則,也許我可以從「提交」步驟開始))。

回答

0

這聽起來像你不是單元測試會這樣的方式,你可以假的,這是建立在控制器的確認虛擬視圖模型得到行動:

var MyViewModel dummyModel; 

    var infoStepModel info; 
    info.property = xxx; 

    dummyModel.Property = XXX; 
    dummyModel.Property = 123; 
    dummyModel.infoStep = info; 

    return View(dummyModel); 

然後更改屬性的設置,您需要爲了測試你的後期邏輯的每個部分。它會有點慢,因爲每次運行都需要更改屬性,直到測試完所有邏輯流程。

如果沒有測試框架,您將被迫運行程序並輸入每個步驟,如上所述。有了這個,你至少可以放棄每一步,你可以直接進入確認步驟並準備好假數據。

此外,如果您將邏輯移出控制器的後置動作並轉移到接受模型的類中,那麼如果您使用的是測試框架,則也可以更容易地進行測試。然後,您將使用控制器來傳遞數據,並可能響應返回的類結果。

+0

謝謝,這只是一個快速和骯髒的實施很好。目前不太擔心如何改變它,但是,我應該考慮一個測試框架。我是編程新手,因此添加測試有點壓倒性,因爲我甚至不知道如何去做。我感受到更多的閱讀/研究。 :) – REMESQ

+0

你可以建議一個框架,這將有助於完全這一點,是相對容易實現? – REMESQ

+0

有幾個,NUnit和XUnit似乎很受歡迎。 MS測試也被烘烤到VS. – klabranche

相關問題