Phpunit 在Moodle中以编程方式完成课程并设定分数

Phpunit 在Moodle中以编程方式完成课程并设定分数,phpunit,moodle,moodle-api,Phpunit,Moodle,Moodle Api,我是Moodle的新手,正在开发一个旧的应用程序,以下是规范: $version = 2016120502.05; $release = '3.2.2+ (Build: 20170407)'; $branch = '32'; 我的最终目标是能够创建一个生成器类,为一些PHPUnit单元测试创建虚拟数据。()我发现有一个用于创建课程和用户的预构建。但我需要能够在课程中用他们的成绩给他们打分 我在看这个,这可能至少是我需要的一部分。然而,系统中有很多表,我不

我是Moodle的新手,正在开发一个旧的应用程序,以下是规范:

$version  = 2016120502.05;             
$release  = '3.2.2+ (Build: 20170407)'; 
$branch   = '32';  
我的最终目标是能够创建一个生成器类,为一些PHPUnit单元测试创建虚拟数据。()我发现有一个用于创建课程和用户的预构建。但我需要能够在课程中用他们的成绩给他们打分

我在看这个,这可能至少是我需要的一部分。然而,系统中有很多表,我不确定这是否是我所需要的

以下是我的代码,直到最后一点:

// Create user;
    $this->user = $this->getDataGenerator()->create_user();
    // Create courses.
    $courseCount = 0;
    $courses = [];
    while ($courseCount < 5) {
        $courses[] = $this->getDataGenerator()->create_course();
        $courseCount++;
    }
    /** @var \myGlobal_generator $generator */
    $generator = $this->getDataGenerator()->get_plugin_generator('myGlobal_generator');
    // Create curriculum.
    $this->curriculum = $generator->createCurriculum($courses);
    // Now we need to set a user to have completed each one 
    // of the courses and set their grades for each as well.
//创建用户;
$this->user=$this->getDataGenerator()->create_user();
//创建课程。
$courseCount=0;
$courses=[];
而($courseCount<5){
$courses[]=$this->getDataGenerator()->创建课程();
$courseCount++;
}
/**@var\myGlobal\u生成器$generator*/
$generator=$this->getDataGenerator()->get_plugin_generator('myGlobal_generator');
//创建课程。
$this->currency=$generator->createcurrency($courses);
//现在我们需要设置一个用户来完成每个任务
//并为每门课程设定分数。

请注意,分级和完成跟踪不一定是相关的。例如,您可以在不涉及任何评分的情况下将活动和课程标记为已完成,如下所示:

$cmassign = get_coursemodule_from_id('assign', $cmid);
$completion = new completion_info($course);
$completion->update_state($cmassign, COMPLETION_COMPLETE, $user->id);
$ccompletion = new completion_completion(['course' => $course->id, 'userid' => $user->id]);
$ccompletion->mark_complete();
如果您真的需要测试/生成具有放坡和基于放坡的完工的数据,您可能需要按照以下方式对其进行编码:

  • 创建已启用完成跟踪的课程
  • 使用基于成绩的完成情况跟踪(自动完成情况跟踪,完成情况使用成绩为true)创建活动(将其添加到课程)
  • 使用全局帮助程序
    grade\u update
    创建新的评分项目(与活动和用户相关)
  • 计算活动的内部完成状态(例如,使用公共方法
    $completion->internal\u get\u state
  • 测试活动的状态(已完成通过或已完成失败)