我正在嘗試將一個可觀察類的基本實作放在一個 js 檔案中
export class Observable {
constructor(emitter){
return this._emitter = emitter
}
foo(){
return'bar'
}
subscribe(next, error = {}, complete = {}){
if (typeof next === "function") {
return this._emitter({
next,
error: error,
complete: complete
})
}
else {
return this._emitter(next)
}
}
}
帶有相應的 jest 檔案
import { Observable } from "./observable";
describe("Observable", () => {
test('foo', () => {
let fakeAsyncData$ = new Observable();
expect(fakeAsyncData$.foo()).toBe('bar')
})
test('Observable subscriptions next returns value in pipe', () => {
let test_value = "testing"
let fakeAsyncData$ = new Observable(observer => {
observer.next(test_value);
});
fakeAsyncData$.subscribe({
next(val) { expect(val).toBe(test_value) }
});
});
});
由于某種原因,第二個測驗失敗,因為 subscribe 不是一個函式。這似乎是不正確的。這是整個笑話輸出
FAIL ./observable.test.js
Observable
? foo (21 ms)
? Observable subscriptions next returns value in pipe (2 ms)
● Observable ? Observable subscriptions next returns value in pipe
TypeError: fakeAsyncData$.subscribe is not a function
14 | });
15 |
> 16 | fakeAsyncData$.subscribe({
| ^
17 | next(val) { expect(val).toBe(test_value) }
18 | });
19 | });
at Object.subscribe (observable.test.js:16:24)
Test Suites: 1 failed, 1 total
Tests: 1 failed, 1 passed, 2 total
Snapshots: 0 total
Time: 0.592 s, estimated 1 s
Ran all test suites.
npm ERR! Test failed. See above for more details.
我在這里搞砸了什么?
uj5u.com熱心網友回復:
從建構式中洗掉 return 關鍵字。this._emitter = emitter您正在回傳作為函式的賦值結果,呼叫console.log(typeof fakeAsyncData$)會告訴您。
通過建構式實體化的物件不需要顯式回傳該實體。對任何非原始值執行此操作將改為回傳該值。原始回傳值被忽略 -請參閱 MDN。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/489198.html
標籤:javascript 开玩笑的 可观察的
上一篇:匯入后變數變為常量
