【发布时间】:2018-02-14 18:09:29
【问题描述】:
我正在测试一个从 Promise 接收值并将这个值(字符串)连接到 url 的函数。函数的实现就ok了。
var resp = {"payment": {
"additional_information": {
"skuSeatIds": "[{\"sku\":\"5234\",\"Description\":\"Advanced\",\"seatId\":792}]"
}}};
var promise = Promise.resolve(JSON.parse(resp.payment.additional_information.skuSeatIds));
var update = spyOn(doneService, 'getOrderInfo').and.returnValue(promise);
var url = controller.setSeatIdLink();
expect(url).toBe('http://localhost:4000/#!/search?type=Selector&seatId=792');
});
然后我有调用 doneService.getOrderInfo() 的函数
function setSeatIdLink () {
doneService.getOrderInfo(store.get('orderId')).then(function(resp){
var stri = vm.modalSelectorUrl.concat(resp[0].seatId);
vm.modalSelectorUrl = stri;
return vm.modalSelectorUrl;
});
}
vm.modalSelectorUrl 正确设置了 url。 spyOn 返回值很好。如果我记录“vm.modalSelectorUrl”,那么 url 就可以了。但是我在期望(url)上没有定义......
如果我在 .then(function(){ ... 范围之外对返回进行硬编码,则返回有效。
有什么想法吗?谢谢!
【问题讨论】:
标签: javascript angularjs unit-testing jasmine karma-runner