Javascript TypeError:在jasmine测试中使用Beforeach时未定义的不是构造函数
我在用jasmine编写单元测试时遇到了一个问题,我成功地将其归结为一个非常基本的测试场景: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
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
});
为了成功地设置变量。虽然这个代码片段可以解决这个问题,但它确实有助于提高文章的质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。还请尽量不要用解释性注释挤满你的代码,这会降低代码和解释的可读性!虽然这个代码片段可以解决这个问题,但它确实有助于提高文章的质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。还请尽量不要用解释性注释挤满你的代码,这会降低代码和解释的可读性!