使用SystemJS重置ES6模块(用于单元测试)?

时间:2016-01-21 04:27:23

标签: unit-testing jasmine karma-runner systemjs

我们的工作流程包括使用ES6模块。这还包括单元测试。我们正在测试import个模块。问题是原始作者决定让每个模块返回对象,因此我们在整个代码库中都有全局单例(因为ES6导入的工作原理) - 一个典型的单元测试问题。

有没有办法重置"在每次测试后用SystemJS表示模块?

样本单元测试(由karma-systemjs加载):

import MUT from './Mut' // module under test

describe('MUT', () => {

   it('should do stuff', () => {

      MUT.value = 'foo'
   })

   it('should do more stuff', () => {

      // value should not be 'foo' here. How do you reset MUT?
   })

1 个答案:

答案 0 :(得分:2)

在Github上查看this issue,特别是this comment

尝试删除然后在using (HttpWebClient client = new HttpWebClient()) { client.Headers[HttpRequestHeader.Authorization] = $"Bearer { _token }"; client.Headers[HttpRequestHeader.ContentType] = "application/json"; client.UploadData(_url, Encoding.UTF8.GetBytes(_data)); string queryString = client.ResponseUri.Query.Split('=').Last(); } 块中重新导入模块,如下所示:

beforeEach