【发布时间】:2021-06-03 00:02:24
【问题描述】:
这是我的班级Query:
export default class Query {
constructor(env, query, updateQuery) {
this.query = query //
this.env = env
this.updateQuery = updateQuery
}
generateDefault() {
const routers = this.env.routers
return {
ipVersion: constants.SelectorIPVersion.choices[0].id,
network: constants.SelectorNetwork.choices[0].id,
router: routers && routers.length > 0 ? routers[0].id : null,
command: constants.SelectorCommands.choices[0].id,
parameters: {
id: 'myIP',
value: this.env.myIP.ipv4,
isValid: true,
},
}
}
reset() {
this.updateQuery(this.generateDefault())
}
//rest of code
}
export default function LookingGlassPanelContainer(props) {
const { env, isServerDown } = props
const defaultQuery = new Query(env).generateDefault()
const [query, setQuery] = useState(defaultQuery)
let _query = new Query(env, query, setQuery)
//rest of code
}
› handleReset
TypeError: this.updateQuery is not a function
131 |
132 | reset() {
> 133 | this.updateQuery(this.generateDefault())
| ^
134 | }
136 | setRequestTimeout() {
at Query.reset (src/LookingGlass/components/Query/Query.js:133:10)
at Object.<anonymous> (src/LookingGlass/components/Query/Query.test.js:86:24)
我的测试用例:
describe(
//here i have defined const query and const env
it('handleReset', () => {
let _query = new Query(env, query)
console.log(_query.reset())
})
)
在为Query 编写测试用例后发现错误,谁能帮我这个错误是什么意思?
我是新手,所以我不知道如何在测试用例中保持状态。
我不知道如何在测试用例中通过setQuery,因为setQuery 是setter。
我不想更改我的代码,我可以更改我的测试用例但不能更改代码。
【问题讨论】:
-
您的问题与状态变化无关。正如@Oli 已经提到的,您在测试中没有正确调用
Query类。您需要将updateQuery作为第三个参数传递给您的new Query(env, query)调用,以免出错。
标签: reactjs jestjs react-testing-library