diff --git a/test/unit/features/options/computed.spec.js b/test/unit/features/options/computed.spec.js
new file mode 100644
index 00000000..184fec53
--- /dev/null
+++ b/test/unit/features/options/computed.spec.js
@@ -0,0 +1,110 @@
+import Vue from 'vue'
+
+describe('Options computed', () => {
+ it('basic usage', done => {
+ const vm = new Vue({
+ template: '
{{ b }}
',
+ data: {
+ a: 1
+ },
+ computed: {
+ b () {
+ return this.a + 1
+ }
+ }
+ }).$mount()
+ expect(vm.b).toBe(2)
+ expect(vm.$el.textContent).toBe('2')
+ vm.a = 2
+ expect(vm.b).toBe(3)
+ waitForUpdate(() => {
+ expect(vm.$el.textContent).toBe('3')
+ }).then(done)
+ })
+
+ it('with setter', done => {
+ const vm = new Vue({
+ template: '{{ b }}
',
+ data: {
+ a: 1
+ },
+ computed: {
+ b: {
+ get () { return this.a + 1 },
+ set (v) { this.a = v - 1 }
+ }
+ }
+ }).$mount()
+ expect(vm.b).toBe(2)
+ expect(vm.$el.textContent).toBe('2')
+ vm.a = 2
+ expect(vm.b).toBe(3)
+ waitForUpdate(() => {
+ expect(vm.$el.textContent).toBe('3')
+ vm.b = 1
+ expect(vm.a).toBe(0)
+ }).then(() => {
+ expect(vm.$el.textContent).toBe('1')
+ }).then(done)
+ })
+
+ it('watching computed', done => {
+ const spy = jasmine.createSpy('watch computed')
+ const vm = new Vue({
+ data: {
+ a: 1
+ },
+ computed: {
+ b () { return this.a + 1 }
+ }
+ })
+ vm.$watch('b', spy)
+ vm.a = 2
+ waitForUpdate(() => {
+ expect(spy).toHaveBeenCalledWith(3, 2)
+ }).then(done)
+ })
+
+ it('caching', () => {
+ const spy = jasmine.createSpy('cached computed')
+ const vm = new Vue({
+ data: {
+ a: 1
+ },
+ computed: {
+ b () {
+ spy()
+ return this.a + 1
+ }
+ }
+ })
+ expect(spy.calls.count()).toBe(0)
+ vm.b
+ expect(spy.calls.count()).toBe(1)
+ vm.b
+ expect(spy.calls.count()).toBe(1)
+ })
+
+ it('cache: false', () => {
+ const spy = jasmine.createSpy('cached computed')
+ const vm = new Vue({
+ data: {
+ a: 1
+ },
+ computed: {
+ b: {
+ cache: false,
+ get () {
+ spy()
+ return this.a + 1
+ }
+ }
+ }
+ })
+ expect(spy.calls.count()).toBe(0)
+ vm.b
+ expect(spy.calls.count()).toBe(1)
+ vm.b
+ expect(spy.calls.count()).toBe(2)
+ })
+})