我们正在使用Protractor并使用Jasmine作为BDD框架进行端到端UI测试。我们需要针对REST API中的数据验证UI文本,为此我们正在使用Axios! 这是正确的方法吗? 示例代码如下:
import axios from "axios";
describe("Some test for ", () => {
beforeEach(function(done) {
axios
.get(
"******************"
)
.then(response => {
data_file = response.data;
done();
});
});
it("some spec ", done => {
expect($('#someId').getText()).toBe(data_file.someData);
done();
});
});
我们可以在量角器的Jasmine中使用Chakram代替Axios来获取数据吗?
如果上述方法错误,那么针对REST端点数据测试UI的正确方法是什么? (柴+摩卡+查克拉姆+量角器)还是其他?
答案 0 :(得分:1)
可能是。 done()
回调告诉Jasmine您正在执行异步任务;但是,您应该小心捕捉错误。
import axios from "axios";
describe("Some test for ", () => {
beforeEach(function(done) {
axios
.get(
"******************"
)
.then(response => {
data_file = response.data;
done();
})
// if the above fails to .get, then we should catch here and fail with a message
.catch(error => {
done.fail('axios.get failed to execute');
});
});
在量角器配置中,您需要添加SELENIUM_PROMISE_MANAGER: false
才能启用异步/等待。现在,这将要求您等待所有承诺。
import axios from "axios";
describe("Some test for ", () => {
beforeEach(async () => {
try {
const data_file = await axios.get("******************").data;
} catch (e) {
console.error('axios.get failed to execute');
throw e; // throwing errors should fail the spec.
}
});
it("some spec ", async () => {
// .getText returns a Promise<string> so you'll need to await it
// to get the string value.
expect(await $('#someId').getText()).toBe(data_file.someData);
});
});