sup*_*san 2 javascript jasmine karma-runner karma-jasmine es6-promise
then由于某种原因,我的单元测试无法正常工作.这是测试代码.
describe("Basic promise test", () => {
it("should trigger .then function", () => {
var mock = jasmine.createSpy('some method');
var promise = new Promise((resolve, reject)=> {
console.log("inside Promise");
resolve('something');
console.log("done!");
});
promise.then(mock);
promise.then(function () { //neither works!
mock();
console.log("resolved"); //code does reach here but only after test fails
});
expect(mock).toHaveBeenCalled();
});
});
Run Code Online (Sandbox Code Playgroud)
我尝试过使用'babel-polyfill','es6-promise'和'promise-polyfill'无济于事.我究竟做错了什么?
Jsfiddle为此:https://jsfiddle.net/L53zxe39/
承诺得到解决,但then只有在检查完成后才在下一个微任务中调用回调expect(mock).toHaveBeenCalled();.
它旨在防止承诺的模糊性.一个.then回调保证稍后调用,即使承诺已经得到解决.
异步茉莉花测试以下列方式工作:
describe("Basic promise test", () => {
it("should trigger .then function", (done) => {
var mock = jasmine.createSpy('some method');
var promise = new Promise((resolve, reject)=> {
console.log("inside Promise");
resolve('something');
console.log("done!");
});
promise.then(mock).then(() => {
expect(mock).toHaveBeenCalled();
done();
}).catch(e => {
done.fail(e);
});
});
});
Run Code Online (Sandbox Code Playgroud)
您可以使用done.fail显式地使规范失败.这需要捕获并通知jasmine测试期间未捕获的异常.
| 归档时间: |
|
| 查看次数: |
2397 次 |
| 最近记录: |