unit-testing - Ember CLI : How to do Asynchronous Model Unit Testing with RESTAdapter

标签 unit-testing asynchronous ember.js ember-data ember-cli

我想使用 Ember CLI 附带的 Ember 测试框架来测试我的模型及其与 REST API 的集成,但是在我的模型测试中,我的测试中并未发出使用我的 RESTAdapter 设置的请求。就目前而言,对模型的任何 save() 调用都将导致其后面的所有测试不执行:

这是我为检查与服务器的交互(REST API)而进行的测试:

test "store can be used to send data to server", ->
    store = @store()
    Ember.run ->
        cpanel = store.createRecord "item"
        cpanel.save().then((response) =>
            equal(response.status, 200)
        )

这完全阻止了此测试之后的所有测试;此外,在 Chrome 开发工具中监控“网络”选项卡时,不会向服务器发出任何请求:

following tests fail

一位 friend 建议我使用 QUnit Async Helper,但是在使用它时,我发现 this.store()undefined (也许 Ember QUnit 适配器决定放弃对异步测试助手的支持?):

asyncTest "Async creates account on server", ->
    expect(2)
    store = @store()
    Ember.run =>
        account = store.createRecord("account", {
            siteName: "sample account"
            url: "http://url.com"
        })
        account.save().then((response) =>
            equal(response.status, 200)
            ok account
            start()
        )

async testing fails in model test in ember cli

如何为我的各个模型编写异步测试,并使用 Ember CLI 中的 Ember QUnit 框架测试它们与我的 REST API 的集成,而无需编写集成测试?

最佳答案

我不确定状态来自哪里,保存的 promise 返回记录,而不是服务器的响应。

为了使用开始,必须先使用停止。

停止(); 一些AsyncCall(函数(){ 开始(); });

并且存储仅注入(inject)到路由和 Controller 中,并且不在您的测试范围内。您需要使用容器来获取商店。

store = App.__container__.lookup('store:main');

它看起来像这样:

test("save a record", function(){
  var record,
      store = App.__container__.lookup('store:main');
  stop();
  Em.run(function(){
    record = store.createRecord('color', {color:'green'});
    record.save().then(function(){
      start();
      equal(record.get('id'), 1);
    });
  });
});

示例:http://emberjs.jsbin.com/wipo/49/edit

关于unit-testing - Ember CLI : How to do Asynchronous Model Unit Testing with RESTAdapter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26317855/

相关文章:

javascript - node.js:如何使用序列和 promise 来建模两个异步循环

Javascript for循环等待回调

java - 如何对方法的立即退出进行单元测试

javascript - 如何使用 AngularJS 和 Karma 测试路由

ios - 异步请求如果失败了怎么办?

ember.js - 为一堆不同的路由中使用的 Ember 组件定义模型?

javascript - 从服务访问 Ember-cli 模型类

cordova - ember 2.0、Cordova 和 onDeviceReady

java - 执行 JUnit 测试用例时出现堆栈溢出错误

c# - AutoMapper 空源值和自定义类型转换器,映射失败?