this.url如果未定義類屬性,我想要一個測驗以期望拋出錯誤。
我在這里做錯了什么?
it('should throw an error if url is not provided by default', async () => {
// Given
const Service = require('./services/websocket')
// When
const Websocket = new Service()
// Then
expect(Websocket.url).toBeUndefined()
expect(Websocket).toThrowError('Websocket URL is not provided')
})
// services/websocket.js
class Websocket {
constructor () {
this.url = undefined
if (!this.url) {
throw new TypeError('Websocket URL is not provided')
}
}
}
module.exports = Websocket
開玩笑的錯誤資訊:
FAIL terminal.test.js
Websocket service provider
? should throw an error if url is not provided by default (2 ms)
● Websocket service provider ? should throw an error if url is not provided by default
TypeError: Websocket URL is not provided
4 |
5 | if (!this.url) {
> 6 | throw new TypeError('Websocket URL is not provided')
| ^
7 | }
8 | }
9 | }
at new Websocket (services/websocket.js:6:13)
at Object.<anonymous> (terminal.test.js:7:23)
uj5u.com熱心網友回復:
我設法讓它發揮作用。
it('should throw an error if url is not provided by default', () => {
// Given
const Service = require('./services/websocket')
// When
let Module
try {
Module = new Service()
} catch (error) {
Module = error
}
expect(Module).toBeInstanceOf(Error)
expect(Module.message).toBe('Websocket URL is not defined')
})
it('should pick up a WS url from env file automatically', () => {
process.env.WS_URL = 'ws://dummyurl'
const Service = require('./services/websocket')
const Module = new Service()
expect(Module.url).toEqual(process.env.WS_URL)
})
// services/websocket.js
class Websocket {
constructor () {
this.url = process.env.WS_URL
if (!this.url) {
throw new Error('Websocket URL is not defined')
}
}
}
module.exports = Websocket
uj5u.com熱心網友回復:
在類中斷言錯誤的另一種方法,我發現它是一種更合適的方法:
it('should throw an error if url is not provided by default', () => {
// Given
const Service = require('./websocket')
// When
const Module = () => new Service()
// When
expect(Module).toThrowError('Websocket URL is not defined')
})
class Websocket {
constructor () {
this.url = process.env.WS_URL
if (!this.url) {
throw new Error('Websocket URL is not defined')
}
}
}
module.exports = Websocket
uj5u.com熱心網友回復:
我想你可能正在尋找更像
it('should throw an error if url is not provided by default', () => {
const Service = require('./services/websocket')
expect(new Service()).toThrowError()
})
想要檢查未定義的 URL 是可以理解的,但我不相信在錯誤發生后不會執行任何操作,除非您捕獲并丟棄它,因此沒有設定它不應該是一個阻礙。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/535616.html
