美文网首页Salesforce 开发笔记
测试代码对Owner不可见

测试代码对Owner不可见

作者: 到处舒卷意何长 | 来源:发表于2019-02-25 14:52 被阅读13次

前几天遇到了一个小问题。大概是写了针对Owner是某个特定用户的数据做出一些修改的逻辑,写得很顺利,然而在测试的时候一直遇到查不出来测试数据的问题。
新增代码:

trigger ProcessTask on Task (after insert)
{
    Set<Id> relatedCaseIds = new Set<Id>();
    for(Task newTask : Trigger.new)
    {
        relatedCaseIds.add(newTask.WhatId);
    }
    String specialUserName = 'My Name';
    List<Case> matchedCases = [select Id, OwnerId, Owner.Name, First_Response__c, 
        (select Id, CreatedDate from Tasks order by CreatedDate limit 1) from Case 
        where Owner.Name = :specialUserName and First_Response__c = null and Id in :relatedCaseIds];
    List<Case> updateCases = new List<Case>();
    for(Case caseInfo : matchedCases)
    {
        // Do something
    }
}

测试代码:

@isTest
public class ProcessTaskTest
{
    @isTest
    static void testBasic()
    {
        String specialUserName = 'My Name';
        User specialUser = [select Id, Name  
            from User where Name = :specialUserName limit 1];
        System.debug(specialUser);
        Test.startTest();
        System.runAs(specialUser)
        {
            Case testCase = new Case();
            testCase.OwnerId = specialUser.Id;
            insert testCase;

            Task testTask = new Task();
            testTask.WhatId = testCase.Id;
            insert testTask;
        }
        Test.stopTest();
    }
}

按理来说应该是没有问题的,但是跑测试代码的时候,发现matchedCases这里的查询一直查不到数据,去掉Name的限制倒是能查出来这条数据,不过Owner的名字是NULL。

这是十分让人费解的,难道是连接字段的字段和某些formula字段一样反应慢一拍?但是matchedCases是重新查询出来的数据,按理说不至于,再仔细查看了一些文档,原来问题的根源在于,salesforce让测试里对Owner字段不可见。非常简便的解决这个问题的办法是加上(seeAllData=true),再次尝试跑测试代码,100%,通过。

相关文章

  • 测试代码对Owner不可见

    前几天遇到了一个小问题。大概是写了针对Owner是某个特定用户的数据做出一些修改的逻辑,写得很顺利,然而在测试的时...

  • vue 之 生命周期详解

    由图可见: 测试代码: 要有梦想,即使遥远。

  • 20170718-两段代码的异同

    前两天测试代码,测试人员告诉我,以下的代码2写法不规范 按照测试人员的说法,这里的代码1是对的,代码2不对,当时就...

  • 2019-03-11

    ## 第一行代码 ``` private fun initStatisticLiveData(owner: Lif...

  • 《编写可测试javascript》 第五章 代码覆盖

    代码覆盖率测试的代码/全部代码 代码覆盖高,不代表测试程度高 代码覆盖低,测试程度一定低 测试覆盖率需要将原始js...

  • Android 使用 Intent 传递对象

    Serializable 方式: 实例代码: Parcelable 方式: 实例代码: 测试传递对象: 测试接收对...

  • 45 Junit单元测试

    测试分类:黑盒测试,白盒测试 黑盒测试:给指定输入能否达到预期输出,不care内部代码 白盒测试:输入给后,代码怎...

  • 如何提高在开发阶段的代码质量

    本文纯粹个人意见,有些偏执,不喜勿喷~ owner意识 首先要在意识上理正,代码是你写的,你要为你写的代码负责,质...

  • 当我们在谈质量时, 我们在谈什么?

    作为一名测试人员,我们该如何保证质量? 作为项目的owner,该如何保证质量? 作为一个大型项目的owner,该如...

  • 谁对特性负责?

    PO_product owner 对整个产品负责。 Product Owner在团队中的作用 在junior团队中...

网友评论

    本文标题:测试代码对Owner不可见

    本文链接:https://www.haomeiwen.com/subject/tivwyqtx.html