我需要一些關於編寫測試腳本的幫助,該腳本涵蓋了足夠的以下觸發器,我已經設法在我的沙盒帳戶上工作。 觸發器是在特定類型的商機關閉時創建額外資產。觸發似乎運行良好,但我真的不知道如何開始編寫測試用例...爲了這些機會關閉,帳戶需要完成以下(我已經包含一些示例數據 - 它們是選擇列表必須特異性金額):APEX觸發器的Salesforce測試類
a.TurnoverBand__c = '<£10 million';
a.Joining_Fee__c = '£1,920';
a.Annual_Subscription__c = '£1,320';
觸發如下:
trigger CreateInclusiveAssetonMembershipWon on Opportunity (after insert, after update)
{
for(Opportunity o: trigger.new)
{
if(o.isWon == true && o.HasOpportunityLineItem == true && (o.Type == 'A Membership' || o.Type == 'AB Membership' || o.Type == 'A Membership Upgrade' || o.Type == 'AB Membership Upgrade'))
{
String opptyId = o.Id;
Asset[] ast = new Asset[]{};
Asset a = new Asset();
{
a = new Asset();
a.AccountId = o.AccountId;
a.Product2Id = '01tA0000003N1pW';
a.Quantity = o.Inclusive_Training_Spaces_Allocated__c;
a.Price = 300;
a.PurchaseDate = o.CloseDate;
a.Status = 'Purchased';
a.Description = 'Allocated Spaces';
a.Name = 'Membership Inclusive Training';
ast.add(a);
}
insert ast;
}
}
}
如果有人可以幫助我在此我將不勝感激!
感謝
這個觸發到目前爲止ETA測試腳本:
@isTest
private class TrngAstOppTrigTestSuite {
static testMethod void verifyBehaviorOnInsert_positive() {
Account a = new Account();
a.Name = 'New Test Account';
a.Account_Email__c = '[email protected]';
a.TurnoverBand__c = '<£10 million';
a.Joining_Fee__c = '£1,920';
a.Annual_Subscription__c = '£1,320';
insert a;
Opportunity o = new Opportunity();
OpportunityLineItem ol = new OpportunityLineItem();
PricebookEntry pbID = [select ID from PricebookEntry];
o.AccountId = a.Id;
o.Name = 'test';
o.Type = 'A Membership';
o.StageName = 'Needs Analysis';
o.CloseDate = date.today();
insert o;
ol.OpportunityId = o.Id;
ol.Quantity = 1;
ol.UnitPrice = 2.00;
ol.PricebookEntryId = pbID.Id;
insert ol;
o.StageName= 'Closed Won';
update o;
delete ol;
delete o;
}
}
如果任何人都可以說,如果我在正確的方向這是怎麼回事我將不勝感激。試圖消除這些錯誤,但是如果這不起作用,顯然沒有意義。 感謝
感謝您的快速反應!我現在已經改變了我的觸發器代碼,並且確保從現在開始不會在循環中包含任何DML ...關於測試,我有以下幾點 - 任何人都可以說如果我要朝着正確的方向前進?我發現DeveloperForce頁面上的例子有點令人困惑。非常感謝。 –
在對您的測試示例進行快速瀏覽之後,我可以說您絕對需要瀏覽developer.force.com提供的教程和指南。 例如;你的測試代碼沒有assert語句,沒有他們你確認你的代碼沒有未捕獲的異常,但是你沒有確認它是否按預期工作。在測試結束時您還會有不必要的DML刪除語句,對測試代碼中對象的更改不會提交給數據庫。 –