测试返回的结果与静态方法不一致



我注意到我的因果报应测试返回了一组不一致的结果。

它们经常通过,但经常会出现这样的错误:

例如,1(如果按钮计数超过1 ,则应从课程内容中删除按钮元素

我偶尔会得到Expected 3 to be 2

例如2(如果按钮计数等于1 ,则不应从课程内容中删除按钮元素

我偶尔会得到Expected 2 to be 1

我正在测试静态方法,有什么方法可以保证结果一致吗?

import { TestBed } from '@angular/core/testing';
import { CourseContentElementButtonService } from './course-content-element-button.service';
import { TEST_BUILDER_INITIAL_STATE } from '../../../course';
describe('CourseContentButtonService', () => {
const course = TEST_BUILDER_INITIAL_STATE;
const courseContent = course.modules[0].content;
const courseContentUid = course.modules[0].content[0].uid;
const courseContentElementUid = course.modules[0].content[0].button[0].uid;
beforeEach(() => {
TestBed.configureTestingModule({});
});
describe('addCourseContentElementButton()', () => {
it('should add button element to course content', () => {
const newCourseContent = CourseContentElementButtonService.addCourseContentElementButton(
courseContent,
courseContentElementUid,
courseContentUid
);
expect(newCourseContent[0].button.length).toBe(2);
});
});
describe('deleteCourseContentElementButton()', () => {
it('should delete button element from course content if button count is more than 1', () => {
let newCourseContent = CourseContentElementButtonService.addCourseContentElementButton(
courseContent,
courseContentElementUid,
courseContentUid
);
expect(newCourseContent[0].button.length).toBe(2);
newCourseContent = CourseContentElementButtonService.deleteCourseContentElementButton(
newCourseContent,
1,
courseContentUid
);
expect(newCourseContent[0].button.length).toBe(1);
});

it('should not delete button element from course content if button count is equal to 1', () => {
let newCourseContent = CourseContentElementButtonService.deleteCourseContentElementButton(
courseContent,
1,
courseContentUid
);
expect(newCourseContent[0].button.length).toBe(1);
});
});
});

假设您使用的是Jasmine(您没有详细说明,但在我的经验中它是最常见的(-默认情况下,测试顺序是随机的。而且你不会在每次测试前重置状态。这意味着addCourseContentElementButton有三分之一的机会在其他方法之前运行。

您可以确保您的测试不依赖于状态(即不依赖于其他测试的执行(,或者,如果您的测试应该按顺序执行,则禁用随机顺序。

茉莉花的配置选项可以在这里找到。

最新更新