Javascript TypeError:在jasmine测试中使用Beforeach时未定义的不是构造函数

Javascript TypeError:在jasmine测试中使用Beforeach时未定义的不是构造函数,javascript,unit-testing,jasmine,Javascript,Unit Testing,Jasmine,我在用jasmine编写单元测试时遇到了一个问题,我成功地将其归结为一个非常基本的测试场景: describe('weird shit', function () { var myVal; beforeEach(myVal = 0); it('throws for some reason', function () { expect(myVal).toBe(0); }); }); 这会抛出一个类型错误: Test 'weird shit:thro

我在用jasmine编写单元测试时遇到了一个问题,我成功地将其归结为一个非常基本的测试场景:

describe('weird shit', function () {
    var myVal;
    beforeEach(myVal = 0);
    it('throws for some reason', function () {
        expect(myVal).toBe(0);
    });
});
这会抛出一个类型错误:

Test 'weird shit:throws for some reason' failed
    TypeError: undefined is not a constructor (evaluating 'queueableFn.fn.call(self.userContext)') in 

file:///C:/USERS/9200378/APPDATA/LOCAL/MICROSOFT/VISUALSTUDIO/14.0/EXTENSIONS/SKJV5WFA.151/TestFiles/jasmine/v2/jasmine.js (line 1886)
    run@file:///C:/USERS/9200378/APPDATA/LOCAL/MICROSOFT/VISUALSTUDIO/14.0/EXTENSIONS/SKJV5WFA.151/TestFiles/jasmine/v2/jasmine.js:1874:20
    execute@file:///C:/USERS/9200378/APPDATA/LOCAL/MICROSOFT/VISUALSTUDIO/14.0/EXTENSIONS/SKJV5WFA.151/TestFiles/jasmine/v2/jasmine.js:1859:13
    queueRunnerFactory@file:///C:/USERS/9200378/APPDATA/LOCAL/MICROSOFT/VISUALSTUDIO/14.0/EXTENSIONS/SKJV5WFA.151/TestFiles/jasmine/v2/jasmine.js:697:42
    execute@file:///C:/USERS/9200378/APPDATA/LOCAL/MICROSOFT/VISUALSTUDIO/14.0/EXTENSIONS/SKJV5WFA.151/TestFiles/jasmine/v2/jasmine.js:359:28
    fn@file:///C:/USERS/9200378/APPDATA/LOCAL/MICROSOFT/VISUALSTUDIO/14.0/EXTENSIONS/SKJV5WFA.151/TestFiles/jasmine/v2/jasmine.js:2479:44
如果我在每次之前删除了
,则它可以正常工作:

describe('weird shit', function () {
    var myVal =0;
    it('throws for some reason', function () {
        expect(myVal).toBe(0);
    });
});

我不明白,每个之前的
非常基本,请帮助。

每个
接受函数之前,您传递了
myVal=0
的结果,这是
0
,不是函数

beforeEach(function(){myVal = 0;});
beforeEach(myVal = 0);
将上述代码替换为以下代码:

beforeEach(function() {
  myVal = 0;
});

有关更多信息,请参阅jasmine 2.5的文档。

在每个
接受函数之前,您传递了
myVal=0
的结果,该结果是
0
,它不是函数

beforeEach(myVal = 0);
将上述代码替换为以下代码:

beforeEach(function() {
  myVal = 0;
});
有关更多信息,请参阅jasmine 2.5的文档。

beforeach()的目的是执行一些包含设置规范代码的函数

在这种情况下,它正在设置变量
myVal=0

您应该向beforeach()传递一个函数,如下所示:

beforeEach(function() {
  myVal = 0
});
为了成功设置变量。

beforeach()的目的是执行一些包含设置规格代码的函数

在这种情况下,它正在设置变量
myVal=0

您应该向beforeach()传递一个函数,如下所示:

beforeEach(function() {
  myVal = 0
});

为了成功地设置变量。

虽然这个代码片段可以解决这个问题,但它确实有助于提高文章的质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。还请尽量不要用解释性注释挤满你的代码,这会降低代码和解释的可读性!虽然这个代码片段可以解决这个问题,但它确实有助于提高文章的质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。还请尽量不要用解释性注释挤满你的代码,这会降低代码和解释的可读性!