更新量角器测试中的模拟对象



只是想知道是否有人有一个很好的解决方案来更新量角器测试中的模拟调用。我需要能够模拟调用(我可以使用ngMockE2E),但下次调用时,我希望它返回不同的结果。

httpbackend.when('GET', ....URL....).respond(200, results);

其中results是返回的json对象。

第一次调用将返回正确的json。但是在同一个测试中,我想更新这些结果,以便下次调用时,它返回更新后的json.

想法吗?

当使用http-backend-proxy模块时,可以在上下文对象的帮助下修改具有相同URL的请求的响应。为此,您必须将一个函数传递给.respond()方法,该方法必须返回一个包含状态和响应数据的数组。在这个函数中,你可以访问一个所谓的context对象,它用于将数据从Protractor test传输到页面上的Angular应用。可以在测试中修改这个上下文对象,这样Angular应用就可以接收到另一个响应。

var HttpBackend = require('http-backend-proxy');
var proxy = new HttpBackend(browser);
// ...
// use one data for first response
proxy.context = {
    notes: notifications,
    messages: allMessages
};
proxy.when('GET', '...notificationsURL...').respond(function () {
    return [200, $httpBackend.context];
});
// here make a first call
// use another data for second response
proxy.context = {
    notes: notifications2,
    messages: allMessages2
};
proxy.syncContext(); // required, update context content for Angular app
// here make a second call

注意:你传递给.respond()的函数将被序列化(转换为字符串)并注入到页面中,默认情况下,要从Angular访问上下文对象,要使用变量$httpBackend。查看文档小节,将其重命名为-配置上下文对象。

最新更新