簡體   English   中英

TypeError:在茉莉花測試中使用beforeEach時未定義不是構造函數

[英]TypeError: undefined not a constructor when using beforeEach in jasmine test

我在 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

如果我刪除了beforeEach那么它工作正常:

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

哪個我不明白, beforeEach很基礎,請大家幫忙。

beforeEach接受一個函數,你傳遞了myVal = 0的結果,即0 ,它不是一個函數。

beforeEach(myVal = 0);

用以下代碼替換上面的代碼:

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

有關更多信息,請參閱此處的 jasmine 2.5 文檔。

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

beforeEach() 的目的是執行一些包含設置規范的代碼的函數。

在這種情況下,它設置變量myVal = 0

您應該將一個函數傳遞給 beforeEach(),如下所示:

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

為了成功設置您的變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM