Jasmine Node javascript承诺测试

时间:2016-06-11 19:01:35

标签: javascript node.js jasmine jasmine-node

我想用茉莉花节点测试一些承诺。但是,测试运行但它说有0个断言。这是我的代码,有什么不对吗?成功调用then部分,所以如果我有一个console.log,它就会被调用。如果我有代码测试一个http请求,那么在成功时,断言就会被正确解释。

var contactStore = await ContactManager.RequestStoreAsync();
var contacts = await contactStore.FindContactsAsync();
var myContact = contacts[0];  //I am sure that this Contact has a Thumbnail

var stream = await myContact.Thumbnail.OpenReadAsync();
byte[] buffer = new byte[stream.Size];
var readBuffer = await stream.ReadAsync(buffer.AsBuffer(), (uint)buffer.Length, InputStreamOptions.None);

var file = await ApplicationData.Current.LocalFolder.CreateFileAsync("image.jpg", CreationCollisionOption.ReplaceExisting);
var fileStream = await file.OpenStreamForWriteAsync();
await fileStream.WriteAsync(readBuffer.ToArray(), 0, (int)readBuffer.Length);

});

1 个答案:

答案 0 :(得分:3)

您需要为传递给done的回调指定it参数,因此Jasmine知道您正在异步测试某些内容:

it("contains spec with an expectation", function(done) {
    // ...

当您包含该参数时,Jasmine会等待一段时间让您拨打done,以便知道您何时完成。

    done(); 

其次,在异步测试中,通过调用done.fail失败可能更好:

    done.fail();