测试的承诺我得到这个错误,当我测试我的代码:导致未定义值
1) Sourcerer Testing: getStatusCode :
Error: Expected undefined to equal 200
我不知道为什么我收到在我的测试undefined
但是当我运行的代码,我得到200
。这可能是从没有处理promises
正确
Test code:
import expect from 'expect';
import rp from 'request-promise';
import Sourcerer from './sourcerer';
describe("Sourcerer Testing: ",() => {
let sourcerer = new Sourcerer(null);
const testCases = {
"https://www.google.com": 200,
// "www.google.com":
};
describe("getStatusCode",() => {
it("",() => {
for (let testCase in testCases) {
sourcerer.setSourcererUrl(testCase);
expect(sourcerer.url).toEqual(testCase);
expect(sourcerer.getStatusCode()).toEqual(testCases[testCase]);
}
});
});
});
代码:
import rp from 'request-promise';
export default class Sourcerer {
constructor(url) {
this.options = {
method: 'GET',
url,
resolveWithFullResponse: true
};
this.payload = {};
}
setSourcererUrl(url) {
this.url = url;
}
getSourcererUrl() {
return this.url;
}
analyzeSourcePage() {
rp(this.options).then((res) => {
console.log(res);
}).catch((err) => {
console.log("ERROR");
throw(err);
});
}
getStatusCode() {
rp(this.options).then((res) => {
console.log(res.statusCode);
return res.statusCode;
}).catch((err) => {
console.log("STATUS CODE ERROR");
return 0;
});
}
}
@Liondancer还应该注意到,该规范并没有通过异步得。 HTTP请求可以被模拟(例如''nock'),而Sinon和Jasmine都提供了模拟定时器功能并使规范同步的方法。 – estus