gpt4 book ai didi

class - 失败的测试类

转载 作者:行者123 更新时间:2023-11-28 21:32:18 25 4
gpt4 key购买 nike

我正在研究此处发布的解决方案:http://mysalesforcecode.blogspot.com/2012/09/how-to-copy-record-owner-from-cloning.html

按钮和触发器按预期工作,但由于测试中的第二个系统断言,我不断遇到测试失败(测试机会所有者是否根据原始所有者字段保留。我是 apex 新手,所以我可能做错了什么……希望如此 - 谢谢!

按钮:

{!URLFOR( $Action.Opportunity.Clone,Opportunity.Id,     
[cloneli=1,opp11='Prospecting',opp12='10',opp9=
TEXT(MONTH(Opportunity.CloseDate))+"/"
+TEXT(DAY(Opportunity.CloseDate))+"/"
+TEXT(YEAR(Opportunity.CloseDate)+1)
])}&00NZ0000000kfYf={!Opportunity.OwnerId}&retURL={!Opportunity.Id}

触发器(根据以下答案更新):

trigger OwnerIdChange on Opportunity (before insert)
{
for(Opportunity o : Trigger.new)
{
if(o.OriginalOwner__c != null)
o.OwnerId = o.OriginalOwner__c;
}
}

测试类:

@istest
private class Opportunities_Test {

static testMethod void Opportunities_Test1() {
test.starttest();

Profile p = [SELECT Id FROM Profile WHERE Name='Standard User'];
User u = new User(Alias = 'standt', Email='standarduser@testorg.com',
EmailEncodingKey='UTF-8', LastName='Testing', LanguageLocaleKey='en_US',
LocaleSidKey='en_US', ProfileId = p.Id,
TimeZoneSidKey='America/Los_Angeles', UserName='standarduser@testorg.com');
insert u;

Profile s = [SELECT Id FROM Profile WHERE Name='System Administrator'];
User u2 = new User(Alias = 'admin', Email='admin@testorg.com',
EmailEncodingKey='UTF-8', LastName='Testing2', LanguageLocaleKey='en_US',
LocaleSidKey='en_US', ProfileId = s.Id,
TimeZoneSidKey='America/Los_Angeles', UserName='admin@testorg.com');
insert u2;

Account a = new account(Name = 'Test1');
insert a;

List <Opportunity> Opportunity;
Opportunity O1 = new Opportunity();
O1.ownerid = u.id;
O1.accountid = a.id;
O1.Amount= 1;
O1.CloseDate = Date.today();
O1.Name = 'Testing';
O1.StageName= 'Prospecting';
insert O1;

Account b = new account(Name = 'Test2');
insert b;

List <Opportunity> Opportunity2;
Opportunity O2 = new Opportunity();
O2.accountid = b.id;
O2.ownerid = u.id;
O2.Amount= 1;
O2.CloseDate = Date.today();
O2.Name = 'Testing2';
O2.StageName= 'Prospecting';
O2.OriginalOwner__c= u2.id;
insert O2;


List<Opportunity> z = [SELECT Id, Ownerid, Name FROM Opportunity WHERE id= :O2.id];

system.assertEquals(O1.ownerid, u.id);
system.assertEquals(O2.OwnerID, u2.id);

test.stoptest();
}
}

最佳答案

你的触发逻辑有点疯狂,试着把它改成下面的,看看你会不会得到不同的结果。

trigger OwnerIdChange on Opportunity (before insert)
{
for(Opportunity o : Trigger.new)
{
if(o.OriginalOwner__c != null)
o.OwnerId = o.OriginalOwner__c;
}
}

编辑:根据下面的评论,还应该指出他在插入和更新记录后没有获得记录的更新值。重新查询机会记录并根据这些返回值进行断言。

关于class - 失败的测试类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15143925/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com