我正在使用一个类做一些数据库的东西。在这个例子中,我想重置数据并返回数据。
export default class Db {
constructor () {
this.connection = monk('localhost:27017/db')
}
async resetDB () {
const Content = this.connection.get('content')
await Content.remove({})
await createContent()
return Content.findOne({ title: 'article' })
}
}
在我的测试中,我正在调用db.resetDB()
,但我需要获取返回的值,因为我需要将ID作为参数传递。
但是我该怎么做?我认为我的问题是,这是异步的。
let id
describe('Test', () => {
before(() => {
db.resetDB(res => {
id = res._id
Article.open(id) // How do I get the ID?? I do get undefined here
Article.title.waitForVisible()
})
})
it('should do something', () => {
// ...
})
})
答案 0 :(得分:1)
当调用异步函数时,它返回一个Promise。因此你可以在promise的.then()中得到返回值。你可以这样做,
let id
describe('Test', () => {
before(() => {
db.resetDB().then(res => {
id = res._id
Article.open(id) // How do I get the ID?? I do get undefined here
Article.title.waitForVisible()
})
})
it('should do something', () => {
// ...
})
})
答案 1 :(得分:0)
你可以让before函数等到所有异步调用都使用done()回调完成。
https://jasmine.github.io/2.0/introduction.html#section-Asynchronous_Support
你能做的是
let id
describe('Test', () => {
before((done) => {
db.resetDB().then(res => {
id = res._id
Article.open(id) // How do I get the ID?? I do get undefined here
Article.title.waitForVisible()
done()
})
})
it('should do something', () => {
// ...
})
})