2017-03-16 44 views
0

我發現了一個類似的答案在這裏:單元測試Salesforce的

How to unit test works in salesforce?

這裏:https://developer.salesforce.com/docs/atlas.en-us.pages.meta/pages/pages_controller_error_handling.htm

但是,這些並沒有真的好像我的回答特定問題。

我「剔除」了一些測試類。我們應該有從一開始就這樣做,但他們交給了一組開發者一個SalesForce項目,他們從來沒有在之前完成過SalesForce ...然後把我們放在時間緊迫的時候。他們當時告訴我們不要擔心單元測試,現在我們發現SalesForce需要75%或更高的代碼覆蓋率才能投入生產。

無論如何,我知道我可以在返回void的方法中測試狀態,並且我知道我可以測試具有它們的方法的返回類型。

但我的問題是:如何測試應該通過VisualForce頁面輸入的值?我只是創建課程並填寫信息?

我更熟悉C#中的單元測試,以至於我使用Roy Osherove的測試方法命名約定,或者至少是我的版本。

此外,我將如何測試具有查詢字符串的頁面?我假設我會用某種查詢字符串做一個PageReference,但是單元測試通常應該獨立運行。

我主要關心的是動態運行測試(即動態記錄ID),以及如果沒有記錄(即如果開發/測試環境被擦除)會發生什麼。

那麼,對此有何想法?

+0

查看此鏈接中的信息是否正確:https://developer.salesforce.com/docs/atlas.en-us.pages.meta/pages/pages_controller_error_handling.htm – Steve

+0

我注意到,我上面的帖子。我會深入研究它,但我不知道這是否會滿足我的需求。 – MJR

+0

哎呀,我沒注意到那個。我沒有太多建議,因爲我在頂點處理的所有代碼都是用於觸發器的。我所知道的是,你需要在每種測試方法中創建假數據。也許你可以在模擬可能來自Visualforce頁面的值的測試方法中創建變量。而且,如果我的理解正確,我不認爲你需要測試Visualforce頁面,只是實際的類代碼。 HTH – Steve

回答

1

你不試Visualforce頁面,您測試控制器。您可以在測試中創建控制器實例,爲其提供所需的數據(參數)並直接調用控制器中的方法。

MyPageController ctrl = new MyPageController(params) 
ctrl.loadData(); 
ctrl.saveInput(); 
ctrl.alertUser(); 

最好使用testUtils類來爲測試生成虛擬數據。然後從你的測試類中調用適當的方法。

List<Contact> contacts = testUtils.createContacts(); 
insert contacts; 

上插入任何工作觸發器將被觸發,你會得到你的代碼覆蓋率。等等。